Hi Marko, Thanks for your help, your tips are very useful, after some retry and your tips, I finally let blinky work properly on STM32F429. I'm now getting forward to slinky and try to make it OK.
Another question is, I found a bug that isn't directly related with porting stuff, if I want to send a patch, how can I do? On the documentation, it seem there have to two ways to submit the patch (GitHub and PPMC* (?)). Which should I take? Thanks, Louie. * https://cwiki.apache.org/confluence/display/MYNEWT/New+Committer+Acceptance+Process#NewCommitterAcceptanceProcess-Step6:Newcommitteraccountsetup 2017-03-08 1:29 GMT+08:00 marko kiiskila <ma...@runtime.io>: > Hi Louie, > > thanks for the pointer to code. I can see that the startup code is > probably what you should look at. > > Contrast and compare those against the file stm32f4discovery > uses. > > Here are few things I noticed: interrupt vector holds ‘__StackTop’ > as the pointer to initial stack. > I notice in common file you’re setting ‘_estack’, and then set it inside > the assembly. This should not be needed; for bootloader the MCU > reset loads the first 4 bytes to SP at startup, and when app is booting > up, bootloader does the same thing. > > Most likely the reason you’re not able to boot this properly is the > entry point called at the end of startup; it should call _start, not > main. This is needed because _start() sets up the OS, and we > use main() as the entry point to ‘default task’. > > Hope this helps. Let me know if you want me to take another look, > M > > > On Mar 6, 2017, at 6:40 PM, Louie Lu <m...@louie.lu> wrote: > > > > Hi Marko, > > > > Yep, you are right, I got some bad setting in linker script with _estack > > value. > > > > I'm now using the branch here: > > https://github.com/grapherd/incubator-mynewt-core > > which derived from master: 8cf8f54dcf4cb2d > > > > I've trying to give the space for _estack, it CCM or at the end of the > RAM, > > > > (it used in startup_stm32f429xx.s for sp value) > > Reset_Handler: > > ldr sp, =_estack /* set stack pointer */ > > > > > > But the result came a little different, > > First, is sometimes still got unhandled interrupt 3, > > and second, function parameter didn't got right. > > e.g. os_time_delay(osticks) will get a junk value even the value is > > hardcode in main.c, > > > > Using debugger, I can see that the junk value is in the stack zone, > > but no correct value I pass into it. > > > > > > Thanks, > > Louie. > > > > 2017-03-07 1:42 GMT+08:00 marko kiiskila <ma...@runtime.io>: > > > >> Interrupt 3 means Hard fault. Cursory read of the register dump > >> included seems to indicate ‘unaligned access’. And the fault > >> happens within context switching code. > >> > >> Which git branch are you using? Or git tag. I might be able to give > >> more hints if I knew which version of HAL_CM4.S, line 163 you have. > >> My guess is that it is the saved stack pointer within some task > >> structure which is causing the fault. Check for stack overflows. > >> > >>> On Mar 5, 2017, at 7:38 PM, Louie Lu <m...@louie.lu> wrote: > >>> > >>> Hi Sterling, > >>> > >>> Thanks for your reply, this is the info I got from debugger and > serials: > >>> > >>> serials core dump: > >>> > >>> 0:Unhandled interrupt (3), exception sp 0x2002ff90 > >>> 0: r0:0x00000000 r1:0x20001144 r2:0x00000000 r3:0x200012b0 > >>> 0: r4:0x00000000 r5:0x00000000 r6:0x20001144 r7:0x08023684 > >>> 0: r8:0x00000000 r9:0x08020935 r10:0x00000000 r11:0x00000000 > >>> 0:r12:0x2002ffff lr:0xfffffff9 pc:0x0802134c psr:0x2100000e > >>> 0:ICSR:0x00436003 HFSR:0x40000000 CFSR:0x01000000 > >>> 0:BFAR:0xe000ed38 MMFAR:0xe000ed34 > >>> > >>> > >>> gdb debugger backtrace: > >>> > >>> (gdb) bt > >>> #0 0x08021f14 in hal_uart_blocking_tx (port=<optimized out>, data=48 > >> '0') > >>> at hal_uart.c:171 > >>> #1 0x08021b36 in uart_hal_blocking_tx (dev=<optimized out>, > >>> byte=<optimized out>) > >>> at uart_hal.c:64 > >>> #2 0x200012c8 in console_is_midline () > >>> Backtrace stopped: previous frame identical to this frame (corrupt > >> stack?) > >>> (gdb) bt > >>> #0 hal_system_reset () at hal_system.c:33 > >>> #1 0x08020810 in os_default_irq (tf=0x2002ff68) at os_fault.c:159 > >>> #2 0x0802137a in os_default_irq_asm () at HAL_CM4.S:207 > >>> #3 <signal handler called> > >>> #4 PendSV_Handler () at HAL_CM4.S:163 > >>> #5 <signal handler called> > >>> #6 0x0802101c in os_sched (next_t=next_t@entry=0x0) at os_sched.c:150 > >>> #7 0x08020932 in os_time_delay (osticks=osticks@entry=536875332) at > >>> os_time.c:132 > >>> #8 0x0802024a in main (argc=<optimized out>, argv=<optimized out>) at > >>> main.c:73 > >>> > >>> ---- > >>> > >>> (gdb) bt > >>> #0 hal_system_reset () at hal_system.c:33 > >>> #1 0x08020810 in os_default_irq (tf=0x2002ff68) at os_fault.c:159 > >>> #2 0x0802137a in os_default_irq_asm () at HAL_CM4.S:207 > >>> #3 <signal handler called> > >>> #4 PendSV_Handler () at HAL_CM4.S:163 > >>> #5 <signal handler called> > >>> #6 0x0802101c in os_sched (next_t=next_t@entry=0x0) at os_sched.c:150 > >>> #7 0x08020932 in os_time_delay (osticks=osticks@entry=536875332) at > >>> os_time.c:132 > >>> #8 0x0802024a in main (argc=<optimized out>, argv=<optimized out>) at > >>> main.c:73 > >>> > >>> > >>> > >>> > >>> Not sure how to handle the interrupt, is the interrupt three mean the > >> NVIC > >>> 3 interrupt? > >>> > >>> > >>> Thanks, > >>> Louie. > >>> > >>> 2017-03-06 10:55 GMT+08:00 Sterling Hughes < > >> sterling.hughes.pub...@gmail.com > >>>> : > >>> > >>>> Hi Louie, > >>>> > >>>> Excellent! We’d love the port when you’re done. > >>>> > >>>> That usually means a crash of some type has occurred? Can you attach > a > >>>> debugger, you should be able to see a stack trace (similarly - if you > >> can > >>>> get the console attached, it should *fingers-crossed* dump to > console.) > >>>> > >>>> Alternatively, mynewt can generate crash dumps which you can trigger > and > >>>> pull back, it’s been awhile since I looked at this, but hopefully > >> somebody > >>>> else on the list can give you instructions on generating cores on the > >>>> STM32F* series. > >>>> > >>>> Sterling > >>>> > >>>> > >>>> On 5 Mar 2017, at 18:38, Louie Lu wrote: > >>>> > >>>> Hi everyone, > >>>>> > >>>>> I'm now porting mynewt to STM32F429, and this board has the same MCU > >> and > >>>>> CPU with the board STM32F07 which mynewt have already supported. > >>>>> > >>>>> I have now using blinky and slinky to verify the correctness of > >> porting, > >>>>> but encounter the problem that serial output "Unhandled interrupt > (3)" > >>>>> often, when MyNewt calling "os_time_delay" the second time, and > >> sometime > >>>>> in > >>>>> "log_reboot_pkg_init". > >>>>> > >>>>> I'm not sure where do I doing wrong, do anyone has some clue or > suggest > >>>>> that I can do now? > >>>>> > >>>>> Thanks, > >>>>> Louie. > >>>>> > >>>> > >> > >> > >