出出啊
出出啊
It is Not the Mountain We Conquer, but Ourselves

注册于 7 months ago

回答
980
文章
23
关注者
65

私信小师弟帮你解绑,随便找个发布活动的文章,就能找到他。

所有的中断都会有保存寄存器的隐形操作,这个是硬件自己实现的。
栈指针,并不一定随着 pc 指针一定一直变化。栈指针一直指向栈顶,这个不用啥方法去找。
上下文切换的时候当前线程的栈顶地址在线程控制块里保存着。如下线程控制块的定义。

/**
 * Thread structure
 */
struct rt_thread
{
    ...
    /* stack point and entry */
    void       *sp;                                     /**< stack point */
    void       *entry;                                  /**< entry */
    void       *parameter;                              /**< parameter */
    void       *stack_addr;                             /**< stack address */
    rt_uint32_t stack_size;                             /**< stack size */

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

搜一下这个极性,反向找怎么配置

把函数调用改成宏,减少两次函数调用。
放内存里速度可以快多少?

修改 sconscript 文件,把 那俩文件添加到编译里

这么强大的 ide 能没有这个功能? 查看函数调用栈是一个 ide 的基本功能。
手头没有电脑,没法帮你找
cmbacktrace 不是万能的,改天专门写篇文章聊聊 cmbt 能干啥,啥时候用它

自己写一个测试命令,随便加一个。单步调试一下查找命令列表的那个函数里怎么执行过程。
可能命令的 section 没起作用

update 肯定是覆盖式啊,难道能让你修改的和新拉取的共存?
第二个问题,除非改 sconscript。

至少搞俩项目,一个工作项目,一个用来下载包。工作项目随便改,需要新包用另外一个下载,然后拷贝到工作项目。互不影响。

源码里自己添加一个宏定义,添加一种配置,你这个是不是只针对特定的型号芯片才有的功能?

据说要放弃 finsh 了,能不用就不用,能改成 msh 的就改成 msh

不是的,消息队列自己有个指针,也占用你的这个pool,申请的时候按照你的结构体大小 + 4 乘以你预算的消息队列容量。

  1. 先增大所有线程栈,不要小于 512,推荐 1024 起步。
  2. 你描述的崩溃位置不固定,不定在什么位置,很难说是哪儿引起的,有什么野指针之类的。

回到
顶部

发布
问题

投诉
建议