Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 925
» Latest member: HughesElectra
» Forum threads: 861
» Forum posts: 5,784

Full Statistics

Latest Threads
STLinkGDB does not work w...
Forum: Debug interface scripting
Last Post: vdaniel
18-05-2018, 07:36 AM
» Replies: 4
» Views: 196
EbMonitor stopped working
Forum: EmBitz IDE
Last Post: AVI-crak
15-05-2018, 10:41 AM
» Replies: 12
» Views: 1,421
EB support for ESP8266 an...
Forum: EmBitz IDE
Last Post: Mink
14-05-2018, 05:21 PM
» Replies: 10
» Views: 2,467
ST-Link V2-1 and Windows ...
Forum: ARM gdb
Last Post: FrankW
13-05-2018, 10:54 AM
» Replies: 52
» Views: 17,704
Better assert
Forum: General
Last Post: smitjs
10-05-2018, 01:47 PM
» Replies: 1
» Views: 97
cluster contents in .svd ...
Forum: EmBitz IDE
Last Post: jheissjr
10-05-2018, 12:25 PM
» Replies: 6
» Views: 577
STM8 Cosmic support
Forum: STmicro
Last Post: Mink
09-05-2018, 08:53 PM
» Replies: 1
» Views: 80
When will the new release...
Forum: EmBitz IDE
Last Post: vorosj
05-05-2018, 12:04 AM
» Replies: 18
» Views: 3,624
feature or bug in IDE con...
Forum: EmBitz IDE
Last Post: escalator
12-04-2018, 11:05 PM
» Replies: 2
» Views: 376
How to Copy Wizard Script...
Forum: EmBitz IDE
Last Post: Jay
02-04-2018, 07:35 AM
» Replies: 0
» Views: 127

 
  STM8 Cosmic support
Posted by: RaJa - 08-05-2018, 05:36 PM - Forum: STmicro - Replies (1)

From 2016 Cosmic for STM8 is fully supported in STVD, it's free and have no functionality limits.
It's fully compatible with STM8 SPL unlike SDCC. 
It would be nice if a dubugging could be integrated in embitz.
Integrating device wizards I could help (scripts) but debugger is core functionality. 
Is it possible to support this family of MCU?

Print this item

  Better assert
Posted by: smitjs - 08-05-2018, 04:30 PM - Forum: General - Replies (1)

Hi,
I have to send assert output through canbus to the display unit.
At present my assert looks like this:
.h file
#define assert(left,operator,right)\
    if(!((left) operator (right))) \
     {asprintf(&astrbuf,"\nAssert error %s %d %ld %ld\n",__FILE__, __LINE__,\
      (u32)(left),(u32)(right));\
      asserted();\
     }

.c file
void asserted(void)
{ dprint("%s",astrbuf);
  dispstart;
  cmd_text(10,50,30,0, astrbuf);
  free(astrbuf);
  dispend;
This is followed by the code to switch off outputs.

This works very well, example:
assert(millis, <, maxtime);

What irks me is that I cannot see how to send the operator to asprintf.
It would be so much better if the operator could also be displayed.
Any help will be appreciated.
Thank you
Johan Smit

Print this item

  STLinkGDB does not work with STM32F722
Posted by: vdaniel - 08-05-2018, 12:31 PM - Forum: Debug interface scripting - Replies (4)

Dear EmBitz,

The STLinkGDB does not work with STM32F722, while it works Ok with STM32F746.
The message:

Remote debugging using localhost:4242
0x010000000x01000000 in ?? ()
Connected
Loading section .isr_vector, size 0x1e0 lma 0x8000000
Note: automatically using hardware breakpoints for read-only addresses.
Error: Warning:Cannot insert hardware breakpoint 1:Remote communication error.  Target disconnected.: No error..

In previous similar case you asked for the device name and ID.
Here are the data:

Device STM32F72x/F73x
Device ID 0x452
Revision ID Rev A

I have an urgent project, which I do not want to switch to other toolchain.
Please, can you help me before the next release?

Thank you very much,

EmBitz member

vdaniel

Print this item

  feature or bug in IDE context menu?
Posted by: escalator - 12-04-2018, 03:28 PM - Forum: EmBitz IDE - Replies (2)

    Hi, notice the top choices in the (right-clicked) menu: some include the tilde operator to the left of TIM_IT_CC1, some (correctly) do not. BTW in the text, the tilde is separated by a space.
Thanks,
-e

Print this item

  How to Copy Wizard Script-Files?
Posted by: Jay - 02-04-2018, 07:35 AM - Forum: EmBitz IDE - No Replies

Hey,

I have made some custom scripts for the file-wizard to create class-templates when creating c++ h-files and the function implementation of the corrosponding h-file, when creating a cpp-file.
It works pretty good and I like to share it with u, but I dont know how to copy the script-files from the embitz directory (%appdata). When I try to just copy them with windows, I do only get the original file, not my modified one. It only works to copy the code in a txt-file and paste it into another one.
How to do this proberly?

thanks and happy easter monday.

Print this item

  cluster contents in .svd not shown in reg viewer
Posted by: jheissjr - 26-03-2018, 09:51 PM - Forum: EmBitz IDE - Replies (6)

Using an .svd file with <cluster> does not seem to show the cluster contents in the register window.  Do I possibly have a mistake somewhere?

The .svd file was too large to upload to the forum.
https://drive.google.com/file/d/1iiogSY6...sp=sharing



Attached Files Thumbnail(s)
   
Print this item

  Single stepping STM32F091
Posted by: vargham - 06-03-2018, 10:28 AM - Forum: ARM gdb - Replies (1)

I have several STM32 CubeMX / HAL projects and I use EmBitz as IDE. All porjects working fine, including compilation and debugging. There are projects with STM32F103, STM32F205, STM32F207, STM32F405, STM32F429, STM32L476, etc. There is one exception: Execution single stepping is not working with STM32F091 target. Always steps into timer interrupt and never get out. Is there a solution? Thanks.

Print this item

  Atmel-Ice Debugger
Posted by: ben - 06-03-2018, 03:19 AM - Forum: EmBitz IDE - Replies (1)

Hi,

I have a Microchip/Atmel-ICE debugger that works fine using Keil uVision and Atmel Studio but I'd love to try EmBitz.

The problem is I'm not sure about the driver, under Keil, the settings needed to point to CMSIS-DAP..
and in Atmel Studio (GCC), it automatically recognized the debugger (SWD), so not sure what it's using under the hood (gdb server?)

How can I configure EmBitz to use the AT Atmel-ICE debugger?   Can it also do ITM/SWV, and redirect the printf to the console?

Thanks!
Ben

Print this item

  How to combine 192 kb and 64 kb ram ?
Posted by: makem - 02-03-2018, 04:17 PM - Forum: STmicro - Replies (2)

Hi 
I have this error.

Thanks!

||bin\Debug\429zit6.elf section `.bss' will not fit in region `RAM'|
||region RAM overflowed with stack|
||region `RAM' overflowed by 29780 bytes|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 10 seconds) ===|


/*------------------------------------------------------------------------------
* Linker script for running in internal SRAM on the STM32F429ZI
*-------------------------------stm32f429zi_flash.ld---------------------------------------------*/

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
SEARCH_DIR(.)

/* Memory Spaces Definitions */
MEMORY
{
ROM (rx) : ORIGIN = 0x08000000, LENGTH = 2048K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 192K
CCRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
}

/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/


SECTIONS
{
.text :
{
KEEP(*(.isr_vector))
*(.text*)

KEEP(*(.init))
KEEP(*(.fini))

/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)

/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)

*(.rodata*)
KEEP(*(.eh_frame*))
} > RAM

.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > RAM

__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > RAM
__exidx_end = .;

__etext = .;
.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)

. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);

. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);


. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);

. = ALIGN(4);
/* All data end */
__data_end__ = .;

} > RAM
.bss (NOLOAD):
{
__bss_start__ = .;
*(.bss*)
*(COMMON)
__bss_end__ = .;
} > RAM

.heap (NOLOAD):
{
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM

/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy (NOLOAD):
{
. = ALIGN(8);
*(.stack)
} > RAM

/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);

/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}


/*------------------------------------------------------------------------------
* Linker script for running in internal SRAM on the STM32F429ZI
*--------------------stm32f429zi_sram.ld---------------------------*/

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
SEARCH_DIR(.)

/* Memory Spaces Definitions */
MEMORY
{
ROM (rx) : ORIGIN = 0x08000000, LENGTH = 2048K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 192K
CCRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
}

/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/


SECTIONS
{
.text :
{
KEEP(*(.isr_vector))
*(.text*)

KEEP(*(.init))
KEEP(*(.fini))

/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)

/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)

*(.rodata*)
KEEP(*(.eh_frame*))
} > RAM

.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > RAM

__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > RAM
__exidx_end = .;

__etext = .;
.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)

. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);

. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);


. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);

. = ALIGN(4);
/* All data end */
__data_end__ = .;

} > RAM
.bss (NOLOAD):
{
__bss_start__ = .;
*(.bss*)
*(COMMON)
__bss_end__ = .;
} > RAM

.heap (NOLOAD):
{
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM

/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy (NOLOAD):
{
. = ALIGN(8);
*(.stack)
} > RAM

/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);

/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}


/* Cortex-M4 stm32f429x.S*/
.syntax unified
.arch armv7-m

.section .stack
.align 3
#ifdef __STACK_SIZE
.equ Stack_Size, __STACK_SIZE
#else
.equ Stack_Size, 0x400
#endif
.globl __StackTop
.globl __StackLimit
__StackLimit:
.space Stack_Size
.size __StackLimit, . - __StackLimit
__StackTop:
.size __StackTop, . - __StackTop

.section .heap
.align 3
#ifdef __HEAP_SIZE
.equ Heap_Size, __HEAP_SIZE
#else
.equ Heap_Size, 0xC00
#endif
.globl __HeapBase
.globl __HeapLimit
__HeapBase:
.if Heap_Size
.space Heap_Size
.endif
.size __HeapBase, . - __HeapBase
__HeapLimit:
.size __HeapLimit, . - __HeapLimit

.section .isr_vector
.align 2
.globl __isr_vector
__isr_vector:
.long __StackTop /* Top of Stack */
.long Reset_Handler /* Reset Handler */
.long NMI_Handler /* NMI Handler */
.long HardFault_Handler /* Hard Fault Handler */
.long MemManage_Handler /* MPU Fault Handler */
.long BusFault_Handler /* Bus Fault Handler */
.long UsageFault_Handler /* Usage Fault Handler */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long SVC_Handler /* SVCall Handler */
.long DebugMon_Handler /* Debug Monitor Handler */
.long 0 /* Reserved */
.long PendSV_Handler /* PendSV Handler */
.long SysTick_Handler /* SysTick Handler */


// External Interrupts
.long WWDG_IRQHandler // Window WatchDog
.long PVD_IRQHandler // PVD through EXTI Line detection
.long TAMP_STAMP_IRQHandler // Tamper and TimeStamps through the EXTI line
.long RTC_WKUP_IRQHandler // RTC Wakeup through the EXTI line
.long FLASH_IRQHandler // FLASH
.long RCC_IRQHandler // RCC
.long EXTI0_IRQHandler // EXTI Line0
.long EXTI1_IRQHandler // EXTI Line1
.long EXTI2_IRQHandler // EXTI Line2
.long EXTI3_IRQHandler // EXTI Line3
.long EXTI4_IRQHandler // EXTI Line4
.long DMA1_Stream0_IRQHandler // DMA1 Stream 0
.long DMA1_Stream1_IRQHandler // DMA1 Stream 1
.long DMA1_Stream2_IRQHandler // DMA1 Stream 2
.long DMA1_Stream3_IRQHandler // DMA1 Stream 3
.long DMA1_Stream4_IRQHandler // DMA1 Stream 4
.long DMA1_Stream5_IRQHandler // DMA1 Stream 5
.long DMA1_Stream6_IRQHandler // DMA1 Stream 6
.long ADC_IRQHandler // ADC1, ADC2 and ADC3s
.long CAN1_TX_IRQHandler // CAN1 TX
.long CAN1_RX0_IRQHandler // CAN1 RX0
.long CAN1_RX1_IRQHandler // CAN1 RX1
.long CAN1_SCE_IRQHandler // CAN1 SCE
.long EXTI9_5_IRQHandler // External Line[9:5]s
.long TIM1_BRK_TIM9_IRQHandler // TIM1 Break and TIM9
.long TIM1_UP_TIM10_IRQHandler // TIM1 Update and TIM10
.long TIM1_TRG_COM_TIM11_IRQHandler // TIM1 Trigger and Commutation and TIM11
.long TIM1_CC_IRQHandler // TIM1 Capture Compare
.long TIM2_IRQHandler // TIM2
.long TIM3_IRQHandler // TIM3
.long TIM4_IRQHandler // TIM4
.long I2C1_EV_IRQHandler // I2C1 Event
.long I2C1_ER_IRQHandler // I2C1 Error
.long I2C2_EV_IRQHandler // I2C2 Event
.long I2C2_ER_IRQHandler // I2C2 Error
.long SPI1_IRQHandler // SPI1
.long SPI2_IRQHandler // SPI2
.long USART1_IRQHandler // USART1
.long USART2_IRQHandler // USART2
.long USART3_IRQHandler // USART3
.long EXTI15_10_IRQHandler // External Line[15:10]s
.long RTC_Alarm_IRQHandler // RTC Alarm (A and B) through EXTI Line
.long OTG_FS_WKUP_IRQHandler // USB OTG FS Wakeup through EXTI line
.long TIM8_BRK_TIM12_IRQHandler // TIM8 Break and TIM12
.long TIM8_UP_TIM13_IRQHandler // TIM8 Update and TIM13
.long TIM8_TRG_COM_TIM14_IRQHandler // TIM8 Trigger and Commutation and TIM14
.long TIM8_CC_IRQHandler // TIM8 Capture Compare
.long DMA1_Stream7_IRQHandler // DMA1 Stream7
.long FMC_IRQHandler // FMC
.long SDIO_IRQHandler // SDIO
.long TIM5_IRQHandler // TIM5
.long SPI3_IRQHandler // SPI3
.long UART4_IRQHandler // UART4
.long UART5_IRQHandler // UART5
.long TIM6_DAC_IRQHandler // TIM6 and DAC1&2 underrun errors
.long TIM7_IRQHandler // TIM7
.long DMA2_Stream0_IRQHandler // DMA2 Stream 0
.long DMA2_Stream1_IRQHandler // DMA2 Stream 1
.long DMA2_Stream2_IRQHandler // DMA2 Stream 2
.long DMA2_Stream3_IRQHandler // DMA2 Stream 3
.long DMA2_Stream4_IRQHandler // DMA2 Stream 4
.long ETH_IRQHandler // Ethernet
.long ETH_WKUP_IRQHandler // Ethernet Wakeup through EXTI line
.long CAN2_TX_IRQHandler // CAN2 TX
.long CAN2_RX0_IRQHandler // CAN2 RX0
.long CAN2_RX1_IRQHandler // CAN2 RX1
.long CAN2_SCE_IRQHandler // CAN2 SCE
.long OTG_FS_IRQHandler // USB OTG FS
.long DMA2_Stream5_IRQHandler // DMA2 Stream 5
.long DMA2_Stream6_IRQHandler // DMA2 Stream 6
.long DMA2_Stream7_IRQHandler // DMA2 Stream 7
.long USART6_IRQHandler // USART6
.long I2C3_EV_IRQHandler // I2C3 event
.long I2C3_ER_IRQHandler // I2C3 error
.long OTG_HS_EP1_OUT_IRQHandler // USB OTG HS End Point 1 Out
.long OTG_HS_EP1_IN_IRQHandler // USB OTG HS End Point 1 In
.long OTG_HS_WKUP_IRQHandler // USB OTG HS Wakeup through EXTI
.long OTG_HS_IRQHandler // USB OTG HS
.long DCMI_IRQHandler // DCMI
.long CRYP_IRQHandler // CRYP crypto
.long HASH_RNG_IRQHandler // Hash and Rng
.long FPU_IRQHandler // FPU
.long UART7_IRQHandler // UART7
.long UART8_IRQHandler // UART8
.long SPI4_IRQHandler // SPI4
.long SPI5_IRQHandler // SPI5
.long SPI6_IRQHandler // SPI6
.long SAI1_IRQHandler // SAI1
.long LTDC_IRQHandler // LTDC
.long LTDC_ER_IRQHandler // LTDC error
.long DMA2D_IRQHandler // DMA2D

.size __isr_vector, . - __isr_vector
.text
.thumb
.thumb_func
.align 2
.globl Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
/* Loop to copy data from read only memory to RAM. The ranges
* of copy from/to are specified by following symbols evaluated in
* linker script.
* __etext: End of code section, i.e., begin of data sections to copy from.
* __data_start__/__data_end__: RAM address range that data should be
* copied to. Both must be aligned to 4 bytes boundary. */

ldr r1, =__etext
ldr r2, =__data_start__
ldr r3, =__data_end__

#if 1
/* Here are two copies of loop implemenations. First one favors code size
* and the second one favors performance. Default uses the first one.
* Change to "#if 0" to use the second one */
.flash_to_ram_loop:
cmp r2, r3
ittt lt
ldrlt r0, [r1], #4
strlt r0, [r2], #4
blt .flash_to_ram_loop
#else
subs r3, r2
ble .flash_to_ram_loop_end
.flash_to_ram_loop:
subs r3, #4
ldr r0, [r1, r3]
str r0, [r2, r3]
bgt .flash_to_ram_loop
.flash_to_ram_loop_end:
#endif

#ifndef __NO_SYSTEM_INIT
ldr r0, =SystemInit
blx r0
#endif

ldr r0, =_start
bx r0
.pool
.size Reset_Handler, . - Reset_Handler

/* Our weak _start alternative if we don't use the library _start
* The zero init section must be cleared, otherwise the librtary is
* doing that */
.align 1
.thumb_func
.weak _start
.type _start, %function
_start:

/* Zero fill the bss segment. */
ldr r1, = __bss_start__
ldr r2, = __bss_end__
movs r3, #0
b .fill_zero_bss
.loop_zero_bss:
str r3, [r1], #4

.fill_zero_bss:
cmp r1, r2
bcc .loop_zero_bss

/* Jump to our main */
bl main
b .
.size _start, . - _start

/* Macro to define default handlers. Default handler
* will be weak symbol and just dead loops. They can be
* overwritten by other handlers */
.macro def_irq_handler handler_name
.align 1
.thumb_func
.weak \handler_name
.type \handler_name, %function
\handler_name :
b .
.size \handler_name, . - \handler_name
.endm

def_irq_handler NMI_Handler
def_irq_handler HardFault_Handler
def_irq_handler MemManage_Handler
def_irq_handler BusFault_Handler
def_irq_handler UsageFault_Handler
def_irq_handler SVC_Handler
def_irq_handler DebugMon_Handler
def_irq_handler PendSV_Handler
def_irq_handler SysTick_Handler
def_irq_handler Default_Handler

// External Interrupts
def_irq_handler WWDG_IRQHandler // Window WatchDog
def_irq_handler PVD_IRQHandler // PVD through EXTI Line detection
def_irq_handler TAMP_STAMP_IRQHandler // Tamper and TimeStamps through the EXTI line
def_irq_handler RTC_WKUP_IRQHandler // RTC Wakeup through the EXTI line
def_irq_handler FLASH_IRQHandler // FLASH
def_irq_handler RCC_IRQHandler // RCC
def_irq_handler EXTI0_IRQHandler // EXTI Line0
def_irq_handler EXTI1_IRQHandler // EXTI Line1
def_irq_handler EXTI2_IRQHandler // EXTI Line2
def_irq_handler EXTI3_IRQHandler // EXTI Line3
def_irq_handler EXTI4_IRQHandler // EXTI Line4
def_irq_handler DMA1_Stream0_IRQHandler // DMA1 Stream 0
def_irq_handler DMA1_Stream1_IRQHandler // DMA1 Stream 1
def_irq_handler DMA1_Stream2_IRQHandler // DMA1 Stream 2
def_irq_handler DMA1_Stream3_IRQHandler // DMA1 Stream 3
def_irq_handler DMA1_Stream4_IRQHandler // DMA1 Stream 4
def_irq_handler DMA1_Stream5_IRQHandler // DMA1 Stream 5
def_irq_handler DMA1_Stream6_IRQHandler // DMA1 Stream 6
def_irq_handler ADC_IRQHandler // ADC1, ADC2 and ADC3s
def_irq_handler CAN1_TX_IRQHandler // CAN1 TX
def_irq_handler CAN1_RX0_IRQHandler // CAN1 RX0
def_irq_handler CAN1_RX1_IRQHandler // CAN1 RX1
def_irq_handler CAN1_SCE_IRQHandler // CAN1 SCE
def_irq_handler EXTI9_5_IRQHandler // External Line[9:5]s
def_irq_handler TIM1_BRK_TIM9_IRQHandler // TIM1 Break and TIM9
def_irq_handler TIM1_UP_TIM10_IRQHandler // TIM1 Update and TIM10
def_irq_handler TIM1_TRG_COM_TIM11_IRQHandler // TIM1 Trigger and Commutation and TIM11
def_irq_handler TIM1_CC_IRQHandler // TIM1 Capture Compare
def_irq_handler TIM2_IRQHandler // TIM2
def_irq_handler TIM3_IRQHandler // TIM3
def_irq_handler TIM4_IRQHandler // TIM4
def_irq_handler I2C1_EV_IRQHandler // I2C1 Event
def_irq_handler I2C1_ER_IRQHandler // I2C1 Error
def_irq_handler I2C2_EV_IRQHandler // I2C2 Event
def_irq_handler I2C2_ER_IRQHandler // I2C2 Error
def_irq_handler SPI1_IRQHandler // SPI1
def_irq_handler SPI2_IRQHandler // SPI2
def_irq_handler USART1_IRQHandler // USART1
def_irq_handler USART2_IRQHandler // USART2
def_irq_handler USART3_IRQHandler // USART3
def_irq_handler EXTI15_10_IRQHandler // External Line[15:10]s
def_irq_handler RTC_Alarm_IRQHandler // RTC Alarm (A and B) through EXTI Line
def_irq_handler OTG_FS_WKUP_IRQHandler // USB OTG FS Wakeup through EXTI line
def_irq_handler TIM8_BRK_TIM12_IRQHandler // TIM8 Break and TIM12
def_irq_handler TIM8_UP_TIM13_IRQHandler // TIM8 Update and TIM13
def_irq_handler TIM8_TRG_COM_TIM14_IRQHandler // TIM8 Trigger and Commutation and TIM14
def_irq_handler TIM8_CC_IRQHandler // TIM8 Capture Compare
def_irq_handler DMA1_Stream7_IRQHandler // DMA1 Stream7
def_irq_handler FMC_IRQHandler // FMC
def_irq_handler SDIO_IRQHandler // SDIO
def_irq_handler TIM5_IRQHandler // TIM5
def_irq_handler SPI3_IRQHandler // SPI3
def_irq_handler UART4_IRQHandler // UART4
def_irq_handler UART5_IRQHandler // UART5
def_irq_handler TIM6_DAC_IRQHandler // TIM6 and DAC1&2 underrun errors
def_irq_handler TIM7_IRQHandler // TIM7
def_irq_handler DMA2_Stream0_IRQHandler // DMA2 Stream 0
def_irq_handler DMA2_Stream1_IRQHandler // DMA2 Stream 1
def_irq_handler DMA2_Stream2_IRQHandler // DMA2 Stream 2
def_irq_handler DMA2_Stream3_IRQHandler // DMA2 Stream 3
def_irq_handler DMA2_Stream4_IRQHandler // DMA2 Stream 4
def_irq_handler ETH_IRQHandler // Ethernet
def_irq_handler ETH_WKUP_IRQHandler // Ethernet Wakeup through EXTI line
def_irq_handler CAN2_TX_IRQHandler // CAN2 TX
def_irq_handler CAN2_RX0_IRQHandler // CAN2 RX0
def_irq_handler CAN2_RX1_IRQHandler // CAN2 RX1
def_irq_handler CAN2_SCE_IRQHandler // CAN2 SCE
def_irq_handler OTG_FS_IRQHandler // USB OTG FS
def_irq_handler DMA2_Stream5_IRQHandler // DMA2 Stream 5
def_irq_handler DMA2_Stream6_IRQHandler // DMA2 Stream 6
def_irq_handler DMA2_Stream7_IRQHandler // DMA2 Stream 7
def_irq_handler USART6_IRQHandler // USART6
def_irq_handler I2C3_EV_IRQHandler // I2C3 event
def_irq_handler I2C3_ER_IRQHandler // I2C3 error
def_irq_handler OTG_HS_EP1_OUT_IRQHandler // USB OTG HS End Point 1 Out
def_irq_handler OTG_HS_EP1_IN_IRQHandler // USB OTG HS End Point 1 In
def_irq_handler OTG_HS_WKUP_IRQHandler // USB OTG HS Wakeup through EXTI
def_irq_handler OTG_HS_IRQHandler // USB OTG HS
def_irq_handler DCMI_IRQHandler // DCMI
def_irq_handler CRYP_IRQHandler // CRYP crypto
def_irq_handler HASH_RNG_IRQHandler // Hash and Rng
def_irq_handler FPU_IRQHandler // FPU
def_irq_handler UART7_IRQHandler // UART7
def_irq_handler UART8_IRQHandler // UART8
def_irq_handler SPI4_IRQHandler // SPI4
def_irq_handler SPI5_IRQHandler // SPI5
def_irq_handler SPI6_IRQHandler // SPI6
def_irq_handler SAI1_IRQHandler // SAI1
def_irq_handler LTDC_IRQHandler // LTDC
def_irq_handler LTDC_ER_IRQHandler // LTDC error
def_irq_handler DMA2D_IRQHandler // DMA2D

.end

Print this item

  Linker ignores implementation of function
Posted by: Traubensaft - 28-02-2018, 05:20 PM - Forum: ArmGCC - EmBlocks - Replies (4)

Hi,

I am using emBitz with CubeMX generated HAL code. In HAL, interrupt handling callback functions are pre-implemented with a __weak symbol. The developer is supposed to write his own implementeation in the user files (e.g. main.c)

In my case I made a custum implementation of void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan) in main.c but the linker does not use my implementation to "overwrite" the __weak function of the HAL.

How do I have to configure emBitz to get things working?

Thank you in advance
~Traubensaft

Print this item