RTT_逍遥
RTT_逍遥 - 认证专家
我欲乘风

注册于 2 years ago

回答
172
文章
6
关注者
9

1.其实你可以试下不带RTOS的极限情况下速率是多少,通常来讲带RTOS和不带RTOS的效果应该是一样的,这样才能体现RTOS的实时性。如果效果不一样,说明RTOS有些地方需要进一步优化。

这个问题可以分两步进行隔断实验。

  1. APP在偏移之后,运行是否正常。通常可以debug的模式下指定APP的偏移地址,这个时候查看下是否运行正常,

如果运行正常则说明问题可能在BootLoader端。
如果运行不正常,说明问题可能在偏移地址这边,可以试着改下偏移地址试试看。

image.png

看上去vector.s是只适配KEIL的。可以用keil编译试试,rt-studio由于是gcc的。可能存在一些兼容问题。
@Embedded小飞哥

是的,用来控制ec20电源的

肯定可以,rt smart的目的之一就是设备框架,感兴趣可以试试哦。不过rtt之前的软件肯定没有用户态之分。不过rt smart上的新软件可以区分用户态和内核态。不知道这么回答是否明了?

@大话西游2018 看来楼主的好奇心还是挺大的。那我们就来看看究竟到底怎么回事吧。
你写代码的地方经过反汇编得知,nice_day其实是由于编译器对其进行优化,认为const变量不会变,那就直接用常量定义吧。0x63 =99
image.png

实际上不是map里面没有,是由于编译器对其进行优化,让这个常量直接作为一个十六进制的数字放到汇编里面。

比如你如果做如下修改,把const的int改为char[]类型,你会发现nice_day变量在map的地址很清楚。
image.png

当然这边说的优化并不是优化等级,当前我用的等级是-O0. 也就是说可以算作编译器默认认为cosnt int可以作为常量直接存储。

这个从log来看是从github上面下载的。github下载在国内会比较慢,可以试试翻墙用VPN试试。
可以试试这个
https://github.com/freefq/free

实践是检验真理的唯一途径,我用下面的代码帮你测了一下,你可以试下。
实验证明:
rt_thread_resume可以唤醒rt_thread_delay挂起的进程。

    while (1)
    {
        rt_pin_write(LEDB_PIN, PIN_HIGH);    /* Set GPIO output 1 */
        rt_thread_mdelay(50000);               /* Delay 500mS */
       rt_pin_write(LEDB_PIN, PIN_LOW);     /* Set GPIO output 0 */
        rt_thread_mdelay(50000);  
       // rt_thread_mdelay(500);               /* Delay 500mS */
    }
}
extern rt_thread_t tid;
static resume()
{
     rt_kprintf("using armclang, version: %d\n", __ARMCC_VERSION);
     rt_thread_resume(tid);
}
MSH_CMD_EXPORT(resume,resuem);

这是在哪个平台上测试的呢?

回到
顶部

发布
问题

投诉
建议