完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
最近要用429的CAN外设,找了找资料发现RT这块做得很不好。只能动手尝试下自己添加,因为用惯了KEIL环境,STUDIO那个尝试两下,各种坑没想象的美好。好了闲话不说了,入正题。 用的是master下的野外BSP架构,然后用ENV->menucofig生成的CAN驱动,按照先辈们指引,改取消屏蔽的取消屏蔽,该加的defind也加了。 只有本来要用CUBEMX生成的HAL_CAN_MspInit()函数没添加,我发现本身drv_can.c中带的rt_hw_can_init()可以使用。经过一阵魔改,程序编译通过了,然后理所当然的挂了。。finsh显示 msh >(obj != object) assertion failed at function:rt_object_init, line number:359。 琢磨半天啥叫项目不是本项目,上网查了查大家说的还是没有目标。老本行单步查问题,程序走到rt_components_board_init()函数出不去了,点进去继续查,死在了
这个循环内。好吧又研究半天这又啥玩意,终于知道这是个自动初始化功能,遍历初始化的所谓pro,应该是有未加入list的pro导致for循环异常,果断把rt_hw_can_init()函数调用屏蔽。 程序正常了,那么也就是说还是can驱动的问题。重新加载rt_hw_can_init(),查看map文件 __rt_init_rti_start 0x0800f668 Data 4 components.o(.rti_fn.0) 看到can的pro是在 __rt_init_rti_board_start与__rt_init_rti_board_end之间,那么我就不知道问题出在哪里了? 有没有大神对RT比较熟的可以解答下我这初学者的问题,整体说RT用的LINUX的架构思路搭平台想法很好,然而实际用起来例程不够,大坑小坑不断,这个框架对没有linux基础的嵌入式菜鸟来说太难了T-T。 比freertos上手还费劲。 |
|
相关推荐
3个回答
|
|
|
可以在 rt_hw_can_init 里面下个断点,再定位下是哪块的问题。
|
|
|
|
|
|
rt_hw_can_init()是能通过的,这里光跑逻辑没问题。我刚才实验把他拉出自动初始化里边,程序就不死了。又根据官方资料写了一个My_can,把sample_can做出来了,可以通过控制台发送此指令,list_device可以看到can1 can2挂载,然而实际上出现了。
msh >can_sample can2 To initialize device:can2 failed. The error code is -1 (res == RT_EOK) assertion failed at function:can_sample, line number:98 说明本身dri_can做的有问题,有空还得回头看看RT架构下这玩意咋整的,想省事看来不大行了。 |
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 14:20 , Processed in 0.606206 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1393