mirror of
https://github.com/google/pebble.git
synced 2025-07-14 02:01:59 -04:00
Merge ecfd50f991
into 4051c5bb97
This commit is contained in:
commit
74b93756f3
516 changed files with 1078 additions and 1078 deletions
|
@ -28,7 +28,7 @@
|
|||
#define GPIO_Port_NULL ((GPIO_TypeDef *) 0)
|
||||
#define GPIO_Pin_NULL ((uint16_t)0x0000)
|
||||
|
||||
// This is generated in order to faciliate the check within the IRQ_MAP macro below
|
||||
// This is generated in order to facilitate the check within the IRQ_MAP macro below
|
||||
enum {
|
||||
#define IRQ_DEF(num, irq) IS_VALID_IRQ__##irq,
|
||||
#include "irq_stm32f7.def"
|
||||
|
|
|
@ -140,7 +140,7 @@ void display_init(void) {
|
|||
|
||||
// Work around an issue which some boards exhibit where the FPGA ring
|
||||
// oscillator can start up with higher harmonics, massively overclocking the
|
||||
// design and causing malfunction. When this occurrs, the draw-scene command
|
||||
// design and causing malfunction. When this occurs, the draw-scene command
|
||||
// will not work, asserting BUSY indefinitely but never updating the display.
|
||||
// Other commands such as display-on and display-off are less affected by the
|
||||
// overclocking, so the display can be turned on while the FPGA is in this
|
||||
|
|
|
@ -239,7 +239,7 @@ bool pmic_enable_battery_measure(void) {
|
|||
bool pmic_disable_battery_measure(void) {
|
||||
bool result = prv_set_mon_config_register(0);
|
||||
|
||||
// Releases the lock that was previously aquired in pmic_enable_battery_measure.
|
||||
// Releases the lock that was previously acquired in pmic_enable_battery_measure.
|
||||
prv_mon_config_unlock();
|
||||
|
||||
return result;
|
||||
|
|
|
@ -138,7 +138,7 @@ void fw_copy_check_update_fw(void) {
|
|||
if (boot_bit_test(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS)) {
|
||||
dbgserial_putstr("Our previous firmware update failed, aborting update.");
|
||||
|
||||
// Pretend like the new firmware bit wasn't set afterall. We'll just run the
|
||||
// Pretend like the new firmware bit wasn't set after all. We'll just run the
|
||||
// previous code, whether that was normal firmware or the recovery firmware.
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS);
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_AVAILABLE);
|
||||
|
@ -165,7 +165,7 @@ void fw_copy_check_update_fw(void) {
|
|||
break;
|
||||
case UPDATE_FW_ERROR_MICRO_FLASH_MANGLED:
|
||||
// We've broken our internal flash when trying to update our normal
|
||||
// firmware. Fall back immediately to the recovery firmare.
|
||||
// firmware. Fall back immediately to the recovery firmware.
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_ONE);
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_TWO);
|
||||
system_reset();
|
||||
|
|
|
@ -70,28 +70,28 @@ SECTIONS
|
|||
It is one task of the startup to copy the initial values from FLASH to RAM. */
|
||||
.data : {
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .data secion */
|
||||
/* This is used by the startup in order to initialize the .data section */
|
||||
__data_start = .;
|
||||
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
|
||||
. = ALIGN(4);
|
||||
__data_end = .; /* This is used by the startup in order to initialize the .data secion */
|
||||
__data_end = .; /* This is used by the startup in order to initialize the .data section */
|
||||
} >RAM AT>FLASH
|
||||
__data_load_start = LOADADDR(.data);
|
||||
|
||||
/* This is the uninitialized data section */
|
||||
.bss (NOLOAD) : {
|
||||
. = ALIGN(4);
|
||||
__bss_start = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
__bss_start = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(COMMON)
|
||||
|
||||
. = ALIGN(4);
|
||||
__bss_end = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
__bss_end = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
} >RAM
|
||||
|
||||
.stack (NOLOAD) : {
|
||||
|
|
|
@ -39,7 +39,7 @@ void delay_us(uint32_t us) {
|
|||
|
||||
void delay_ms(uint32_t millis) {
|
||||
// delay_us(millis*1000) is not used because a long delay could easily
|
||||
// overflow the veriable. Without the outer loop, a delay of even five
|
||||
// overflow the variable. Without the outer loop, a delay of even five
|
||||
// seconds would overflow.
|
||||
while (millis--) {
|
||||
delay_us(1000);
|
||||
|
|
|
@ -64,7 +64,7 @@ int ceil_log_two(uint32_t n);
|
|||
)
|
||||
|
||||
/**
|
||||
* Compute the next backoff interval using a bounded binary expoential backoff formula.
|
||||
* Compute the next backoff interval using a bounded binary exponential backoff formula.
|
||||
*
|
||||
* @param[in,out] attempt The number of retries performed so far. This count will be incremented
|
||||
* by the function.
|
||||
|
|
|
@ -53,7 +53,7 @@ __attribute__((__noreturn__)) void Default_Handler(void) {
|
|||
|
||||
// All these functions are weak references to the Default_Handler,
|
||||
// so if we define a handler in elsewhere in the firmware, these
|
||||
// will be overriden
|
||||
// will be overridden
|
||||
#define ALIAS(sym) __attribute__((__weak__, __alias__(sym)))
|
||||
ALIAS("Default_Handler") void NMI_Handler(void);
|
||||
ALIAS("Default_Handler") void HardFault_Handler(void);
|
||||
|
|
|
@ -97,7 +97,7 @@ def process_binary_header(self):
|
|||
sparse length encoding (see waftools/sparse_length_encoding.py).
|
||||
|
||||
The name of the array variable defaults to the source file name with all
|
||||
characters that are invaid C identifiers replaced with underscores. The name
|
||||
characters that are invalid C identifiers replaced with underscores. The name
|
||||
can be explicitly specified by setting the *array_name* parameter.
|
||||
|
||||
This method overrides the processing by
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
"""
|
||||
Support for converting linked targets to ihex, srec or binary files using
|
||||
objcopy. Use the 'objcopy' feature in conjuction with the 'cc' or 'cxx'
|
||||
objcopy. Use the 'objcopy' feature in conjunction with the 'cc' or 'cxx'
|
||||
feature. The 'objcopy' feature uses the following attributes:
|
||||
|
||||
objcopy_bfdname Target object format name (eg. ihex, srec, binary).
|
||||
|
|
|
@ -58,8 +58,8 @@ def encode(source):
|
|||
frequency.update(source)
|
||||
# most_common() doesn't define what happens if there's a tie in frequency. Let's always pick
|
||||
# the lowest value of that frequency to make the encoding predictable.
|
||||
occurences = frequency.most_common()
|
||||
escape = min(x[0] for x in occurences if x[1] == occurences[-1][1])
|
||||
occurrences = frequency.most_common()
|
||||
escape = min(x[0] for x in occurrences if x[1] == occurrences[-1][1])
|
||||
yield escape
|
||||
for b, g in groupby(source):
|
||||
if b == b'\0':
|
||||
|
|
|
@ -24,7 +24,7 @@ def options(opt):
|
|||
help='Which board to build for (robert_bb, robert_bb2, cutts_bb, robert_evt)')
|
||||
opt.add_option('--nowatchdog', action='store_true',
|
||||
help='Disable automatic reboots when watchdog fires')
|
||||
opt.add_option('--display_test', action='store_true', help='Enables the diplsay test loop')
|
||||
opt.add_option('--display_test', action='store_true', help='Enables the display test loop')
|
||||
|
||||
|
||||
def configure(conf):
|
||||
|
|
|
@ -143,7 +143,7 @@ void check_update_fw(void) {
|
|||
if (boot_bit_test(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS)) {
|
||||
dbgserial_putstr("Our previous firmware update failed, aborting update.");
|
||||
|
||||
// Pretend like the new firmware bit wasn't set afterall. We'll just run the
|
||||
// Pretend like the new firmware bit wasn't set after all. We'll just run the
|
||||
// previous code, whether that was normal firmware or the recovery firmware.
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS);
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_AVAILABLE);
|
||||
|
@ -170,7 +170,7 @@ void check_update_fw(void) {
|
|||
break;
|
||||
case UPDATE_FW_ERROR_MICRO_FLASH_MANGLED:
|
||||
// We've broken our internal flash when trying to update our normal
|
||||
// firmware. Fall back immediately to the recovery firmare.
|
||||
// firmware. Fall back immediately to the recovery firmware.
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_ONE);
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_TWO);
|
||||
system_reset();
|
||||
|
|
|
@ -16,7 +16,7 @@ PROVIDE ( _Stack_Size = __Stack_Size ) ;
|
|||
|
||||
__Stack_Init = _estack - __Stack_Size ;
|
||||
|
||||
/*"PROVIDE" allows to easily override these values from an object file or the commmand line.*/
|
||||
/*"PROVIDE" allows to easily override these values from an object file or the command line.*/
|
||||
PROVIDE ( _Stack_Init = __Stack_Init ) ;
|
||||
|
||||
/*
|
||||
|
@ -96,28 +96,28 @@ SECTIONS
|
|||
.data : AT ( _sidata )
|
||||
{
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .data secion */
|
||||
/* This is used by the startup in order to initialize the .data section */
|
||||
_sdata = .;
|
||||
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
|
||||
. = ALIGN(4);
|
||||
_edata = .; /* This is used by the startup in order to initialize the .data secion */
|
||||
_edata = .; /* This is used by the startup in order to initialize the .data section */
|
||||
} >RAM
|
||||
|
||||
/* This is the uninitialized data section */
|
||||
.bss :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
_sbss = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
_sbss = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(COMMON)
|
||||
|
||||
. = ALIGN(4);
|
||||
_ebss = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
_ebss = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
} >RAM
|
||||
|
||||
.stack :
|
||||
|
|
|
@ -41,7 +41,7 @@ void NOINLINE delay_us(uint32_t us) {
|
|||
|
||||
void delay_ms(uint32_t millis) {
|
||||
// delay_us(millis*1000) is not used because a long delay could easily
|
||||
// overflow the veriable. Without the outer loop, a delay of even five
|
||||
// overflow the variable. Without the outer loop, a delay of even five
|
||||
// seconds would overflow.
|
||||
while (millis--) {
|
||||
delay_us(1000);
|
||||
|
|
|
@ -85,7 +85,7 @@ def process_binary_header(self):
|
|||
file is treated as a raw binary file.
|
||||
|
||||
The name of the array variable defaults to the source file name with all
|
||||
characters that are invaid C identifiers replaced with underscores. The name
|
||||
characters that are invalid C identifiers replaced with underscores. The name
|
||||
can be explicitly specified by setting the *array_name* parameter.
|
||||
|
||||
This method overrides the processing by
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
"""
|
||||
Support for converting linked targets to ihex, srec or binary files using
|
||||
objcopy. Use the 'objcopy' feature in conjuction with the 'cc' or 'cxx'
|
||||
objcopy. Use the 'objcopy' feature in conjunction with the 'cc' or 'cxx'
|
||||
feature. The 'objcopy' feature uses the following attributes:
|
||||
|
||||
objcopy_bfdname Target object format name (eg. ihex, srec, binary).
|
||||
|
|
|
@ -171,7 +171,7 @@ void display_power_disable(void) {
|
|||
|
||||
//!
|
||||
//! Write a single byte synchronously to the display. Use this
|
||||
//! sparingly, as it will tie up the micro duing the write.
|
||||
//! sparingly, as it will tie up the micro during the write.
|
||||
//!
|
||||
void display_write_byte(uint8_t d) {
|
||||
// Block until the tx buffer is empty
|
||||
|
|
|
@ -224,7 +224,7 @@ void display_init(void) {
|
|||
|
||||
// Work around an issue which some boards exhibit where the FPGA ring
|
||||
// oscillator can start up with higher harmonics, massively overclocking the
|
||||
// design and causing malfunction. When this occurrs, the draw-scene command
|
||||
// design and causing malfunction. When this occurs, the draw-scene command
|
||||
// will not work, asserting BUSY indefinitely but never updating the display.
|
||||
// Other commands such as display-on and display-off are less affected by the
|
||||
// overclocking, so the display can be turned on while the FPGA is in this
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include "drivers/flash.h"
|
||||
|
||||
//! An address in the flash address spac
|
||||
//! An address in the flash address space
|
||||
typedef uint32_t FlashAddress;
|
||||
|
||||
//! This is the memory mapped region that's mapped to the parallel flash.
|
||||
|
@ -45,10 +45,10 @@ typedef enum S29VSCommand {
|
|||
} S29VSCommand;
|
||||
|
||||
//! Arguments to the S29VSCommand_EraseSetup command
|
||||
typedef enum S29VSCommandEraseAguments {
|
||||
S29VSCommandEraseAguments_ChipErase = 0x10,
|
||||
S29VSCommandEraseAguments_SectorErase = 0x30
|
||||
} S29VSCommandEraseAguments;
|
||||
typedef enum S29VSCommandEraseArguments {
|
||||
S29VSCommandEraseArguments_ChipErase = 0x10,
|
||||
S29VSCommandEraseArguments_SectorErase = 0x30
|
||||
} S29VSCommandEraseArguments;
|
||||
|
||||
//! The bitset stored in the status register, see flash_s29vs_read_status_register
|
||||
typedef enum S29VSStatusBit {
|
||||
|
|
|
@ -144,7 +144,7 @@ bool pmic_init(void) {
|
|||
return false;
|
||||
}
|
||||
|
||||
// If not written to whithin 5 seconds of power-on the PMIC will shut down.
|
||||
// If not written to within 5 seconds of power-on the PMIC will shut down.
|
||||
//i2c_write_register(I2C_DEVICE_MAX14690, MAX14690_ADDR, PmicRegisters_HAND_SHK, 0x01);
|
||||
|
||||
// Power up 3.2V rail
|
||||
|
@ -261,7 +261,7 @@ bool pmic_enable_battery_measure(void) {
|
|||
bool pmic_disable_battery_measure(void) {
|
||||
bool result = prv_set_mon_config_register(0);
|
||||
|
||||
// Releases the lock that was previously aquired in pmic_enable_battery_measure.
|
||||
// Releases the lock that was previously acquired in pmic_enable_battery_measure.
|
||||
prv_mon_config_unlock();
|
||||
|
||||
return result;
|
||||
|
@ -327,7 +327,7 @@ static bool prv_is_alive(void) {
|
|||
return true;
|
||||
} else {
|
||||
PBL_LOG(LOG_LEVEL_DEBUG,
|
||||
"Error: read max14690 whomai byte 0x%x, expecting 0x%x", val, 0x01);
|
||||
"Error: read max14690 whoami byte 0x%x, expecting 0x%x", val, 0x01);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
#define FLASH_REGION_SYSTEM_RESOURCES_BEGIN 0x380000
|
||||
#define FLASH_REGION_SYSTEM_RESOURCES_END 0x400000 // 512k
|
||||
|
||||
// FIXME: The addresses below here are hacky work arounds and hopefully not the final place
|
||||
// FIXME: The addresses below here are hacky workarounds and hopefully not the final place
|
||||
// for these things. Hopefully many of them can move to the filesystem. Everything above here
|
||||
// should be pretty stable.
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ void check_update_fw(void) {
|
|||
if (boot_bit_test(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS)) {
|
||||
dbgserial_putstr("Our previous firmware update failed, aborting update.");
|
||||
|
||||
// Pretend like the new firmware bit wasn't set afterall. We'll just run the
|
||||
// Pretend like the new firmware bit wasn't set after all. We'll just run the
|
||||
// previous code, whether that was normal firmware or the recovery firmware.
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS);
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_AVAILABLE);
|
||||
|
@ -156,7 +156,7 @@ void check_update_fw(void) {
|
|||
break;
|
||||
case UPDATE_FW_ERROR_MICRO_FLASH_MANGLED:
|
||||
// We've broken our internal flash when trying to update our normal
|
||||
// firmware. Fall back immediately to the recovery firmare.
|
||||
// firmware. Fall back immediately to the recovery firmware.
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_ONE);
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_TWO);
|
||||
system_reset();
|
||||
|
|
|
@ -16,7 +16,7 @@ PROVIDE ( _Stack_Size = __Stack_Size ) ;
|
|||
|
||||
__Stack_Init = _estack - __Stack_Size ;
|
||||
|
||||
/*"PROVIDE" allows to easily override these values from an object file or the commmand line.*/
|
||||
/*"PROVIDE" allows to easily override these values from an object file or the command line.*/
|
||||
PROVIDE ( _Stack_Init = __Stack_Init ) ;
|
||||
|
||||
/*
|
||||
|
@ -96,28 +96,28 @@ SECTIONS
|
|||
.data : AT ( _sidata )
|
||||
{
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .data secion */
|
||||
/* This is used by the startup in order to initialize the .data section */
|
||||
_sdata = .;
|
||||
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
|
||||
. = ALIGN(4);
|
||||
_edata = .; /* This is used by the startup in order to initialize the .data secion */
|
||||
_edata = .; /* This is used by the startup in order to initialize the .data section */
|
||||
} >RAM
|
||||
|
||||
/* This is the uninitialized data section */
|
||||
.bss :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
_sbss = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
_sbss = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(COMMON)
|
||||
|
||||
. = ALIGN(4);
|
||||
_ebss = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
_ebss = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
} >RAM
|
||||
|
||||
.stack :
|
||||
|
|
|
@ -36,7 +36,7 @@ void delay_us(uint32_t us) {
|
|||
|
||||
void delay_ms(uint32_t millis) {
|
||||
// delay_us(millis*1000) is not used because a long delay could easily
|
||||
// overflow the veriable. Without the outer loop, a delay of even five
|
||||
// overflow the variable. Without the outer loop, a delay of even five
|
||||
// seconds would overflow.
|
||||
while (millis--) {
|
||||
delay_us(1000);
|
||||
|
|
|
@ -79,7 +79,7 @@ const char *bool_to_str(bool b);
|
|||
bool convert_bt_addr_hex_str_to_bd_addr(const char *hex_str, uint8_t *bd_addr, const unsigned int bd_addr_size);
|
||||
|
||||
/**
|
||||
* Compute the next backoff interval using a bounded binary expoential backoff formula.
|
||||
* Compute the next backoff interval using a bounded binary exponential backoff formula.
|
||||
*
|
||||
* @param[in,out] attempt The number of retries performed so far. This count will be incremented by
|
||||
* the function.
|
||||
|
|
|
@ -84,7 +84,7 @@ def process_binary_header(self):
|
|||
file is treated as a raw binary file.
|
||||
|
||||
The name of the array variable defaults to the source file name with all
|
||||
characters that are invaid C identifiers replaced with underscores. The name
|
||||
characters that are invalid C identifiers replaced with underscores. The name
|
||||
can be explicitly specified by setting the *array_name* parameter.
|
||||
|
||||
This method overrides the processing by
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
"""
|
||||
Support for converting linked targets to ihex, srec or binary files using
|
||||
objcopy. Use the 'objcopy' feature in conjuction with the 'cc' or 'cxx'
|
||||
objcopy. Use the 'objcopy' feature in conjunction with the 'cc' or 'cxx'
|
||||
feature. The 'objcopy' feature uses the following attributes:
|
||||
|
||||
objcopy_bfdname Target object format name (eg. ihex, srec, binary).
|
||||
|
|
|
@ -182,7 +182,7 @@ void check_update_fw(void) {
|
|||
if (boot_bit_test(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS)) {
|
||||
dbgserial_putstr("Our previous firmware update failed, aborting update.");
|
||||
|
||||
// Pretend like the new firmware bit wasn't set afterall. We'll just run the
|
||||
// Pretend like the new firmware bit wasn't set after all. We'll just run the
|
||||
// previous code, whether that was normal firmware or the recovery firmware.
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_UPDATE_IN_PROGRESS);
|
||||
boot_bit_clear(BOOT_BIT_NEW_FW_AVAILABLE);
|
||||
|
@ -209,7 +209,7 @@ void check_update_fw(void) {
|
|||
break;
|
||||
case UPDATE_FW_ERROR_MICRO_FLASH_MANGLED:
|
||||
// We've broken our internal flash when trying to update our normal
|
||||
// firmware. Fall back immediately to the recovery firmare.
|
||||
// firmware. Fall back immediately to the recovery firmware.
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_ONE);
|
||||
boot_bit_set(BOOT_BIT_FW_START_FAIL_STRIKE_TWO);
|
||||
system_reset();
|
||||
|
|
|
@ -162,14 +162,14 @@ SECTIONS
|
|||
It is one task of the startup to copy the initial values from FLASH to RAM. */
|
||||
.data : {
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .data secion */
|
||||
/* This is used by the startup in order to initialize the .data section */
|
||||
__data_start = .;
|
||||
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
|
||||
. = ALIGN(4);
|
||||
__data_end = .; /* This is used by the startup in order to initialize the .data secion */
|
||||
__data_end = .; /* This is used by the startup in order to initialize the .data section */
|
||||
} >RAM AT>FLASH
|
||||
__data_load_start = LOADADDR(.data);
|
||||
|
||||
|
@ -177,14 +177,14 @@ SECTIONS
|
|||
.bss (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
__bss_start = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
__bss_start = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(COMMON)
|
||||
|
||||
. = ALIGN(4);
|
||||
__bss_end = .; /* This is used by the startup in order to initialize the .bss secion */
|
||||
__bss_end = .; /* This is used by the startup in order to initialize the .bss section */
|
||||
} >RAM
|
||||
|
||||
.stack (NOLOAD) :
|
||||
|
|
|
@ -41,7 +41,7 @@ void NOINLINE delay_us(uint32_t us) {
|
|||
|
||||
void delay_ms(uint32_t millis) {
|
||||
// delay_us(millis*1000) is not used because a long delay could easily
|
||||
// overflow the veriable. Without the outer loop, a delay of even five
|
||||
// overflow the variable. Without the outer loop, a delay of even five
|
||||
// seconds would overflow.
|
||||
while (millis--) {
|
||||
delay_us(1000);
|
||||
|
|
|
@ -85,7 +85,7 @@ def process_binary_header(self):
|
|||
file is treated as a raw binary file.
|
||||
|
||||
The name of the array variable defaults to the source file name with all
|
||||
characters that are invaid C identifiers replaced with underscores. The name
|
||||
characters that are invalid C identifiers replaced with underscores. The name
|
||||
can be explicitly specified by setting the *array_name* parameter.
|
||||
|
||||
This method overrides the processing by
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
"""
|
||||
Support for converting linked targets to ihex, srec or binary files using
|
||||
objcopy. Use the 'objcopy' feature in conjuction with the 'cc' or 'cxx'
|
||||
objcopy. Use the 'objcopy' feature in conjunction with the 'cc' or 'cxx'
|
||||
feature. The 'objcopy' feature uses the following attributes:
|
||||
|
||||
objcopy_bfdname Target object format name (eg. ihex, srec, binary).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue