在调试的时候发现,从startup.s中逐步运行到b __main,但下一步就是不跳转到main函数,后来发现问题出现在以下两个函数:
1、void _mutex_acquire(void *m)
2、void _mutex_release(void *m)
为了保证malloc是线程安全的,必须重写这两个方法,保证开关中断,但千万不能在函数里加printf打印,因为这时候还没有初始化串口,会跳不进main。
本文介绍在启动过程中遇到无法跳转到main函数的问题,并指出问题与mutex函数有关。为确保malloc线程安全,需重写mutex_acquire与mutex_release函数。文中强调避免在这些函数中使用未初始化的串口打印。
在调试的时候发现,从startup.s中逐步运行到b __main,但下一步就是不跳转到main函数,后来发现问题出现在以下两个函数:
1、void _mutex_acquire(void *m)
2、void _mutex_release(void *m)
为了保证malloc是线程安全的,必须重写这两个方法,保证开关中断,但千万不能在函数里加printf打印,因为这时候还没有初始化串口,会跳不进main。

被折叠的 条评论
为什么被折叠?
