打印
[uCOS/RTOS]

【RTOS】+ RTT大赛 + 龙芯开发上手

[复制链接]
1944|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 北方西门吹雪 于 2020-6-19 16:25 编辑

1、在项目开发伙伴热情非常高,交流也很多,不过入手的过程好像总是有些漫长。比较完整的过程描述不多,那么把主要的体会分享一下。
2、开发前置条件,
2.1 硬件
- 龙芯开发板l2000,这个开发板是比较高端的64位,对应目前龙芯最高级别的3A3000是64位4核。或者说是4发射64位计算机。l2000是2发射64位的SoC内核,内置了多种协议。目标A53是不大合适的,因为ARM是RISC系统,但是MIPS也是一种RISC架构,有所不同,直接对比也不能完全覆盖和匹配的。
- USB-RS232转换接口,这个非常重要,通常都是USB-TTL接口,转换电平不一样,完全不能用。RS232主要是沿革于传统台式机的类工业串口线,最大距离15米。古老一些的台式机还提供这个串口,通常设置为COM1,可以直接使用,这样就需要一个转接口。

对应不同的公母头选择,只需要引脚2,3,5分别是TX,RX,GND。只需要3根引线就可以了。
2.2 软件
-必备的是rtthread的源码,用git下载到本地。使用zip下载经测试也是可以的,但某些程序因为CFLF转换,会产生编译过不去的情况,所以,推荐用git clone实现。
- 必备ENV工具,直接下载并解压,最好注册为右键快捷键,便于使用
- 交叉编译工具gcc-mips,参照readme设置好。rtt使用的gcc-arm,因此gcc-mips就需要单独使用。
- 说明。最终的编译还是要用ENV环境下的工具scons实现,是基于python的编译工具,不能直接玩gcc-mips,因为引用的rtt库是newlib,如果自主配置环境应该还要更麻烦,用scons就好了。唯一的问题就是下载的文件过多。scons可以导出mkr等三方IDE,但是因为没有mkr-mips,所以,这个便捷的工具对应mips还是用不上的。

3 上述工具备齐了,也好花不少时间,因为github确实速度不给力。还有因为疫情原因,电商订的usb-rs232在路上就被拦截退货了。木有办法,只好用用备用方案。非常的无奈。估计暂时再也不能订货了,只能靠现有的东东玩了。
3.1 首先需要识别硬件接口,现有的资料稍微有些混乱。两个龙芯教育版的接口完全不同。这里从电路原理图扒出来能用的引脚是以下的,
pin 57 GND
pin 59 UART_RX
pin 60 UART_TX
PIN 1 3V3 3.3V
PIN 3 I2C1-SDA
PIN 5 I2C1-SCL
PIN 7 GPIO_07
PIN 9 GND
3.2 然后上电测试调试接口,调试接口占用了UART0,也就是Pin 59,60所使用的经过TTL-RS232电平转换的接口,然后连接电脑com1接口。如下图


3.3 分析启动的过程
直接上电后,两个输出,一个是HDMI输出,如上一帖,显示交互的情况。后台通过UART0输出,如下,





顺次显示启动的后台调试过程。因为没有输入选择数字或者c,直接进入了rtt的环境。
通过分析后台数据,这个是从(wd0,0)/rtthread.elf读取的。这个文件是写入了Debian环境下的SSD硬盘了,这个pmon已经是专门为rtt适配的,如果能再模拟机调试成功,就可以直接写入,不用tftpd这样的网络下载方式load工程文件了。
原来还计划修改pmon从ssd加载的方法,看来已经完成了,不过没有再文档上及时更新。
4 驱动开发和项目开发
4.1 现有的git文件只提供了uart和gpio,但是已经足够完成多数项目了。也提供了开发的范例。
4.2 懒人开发方式,直接在这个BSP上直接修改代码。
4.3 便携驱动,导入文件。因为时间仓促,本身龙芯派到手就比较晚了了,其他更是一个延时,所以完全做好也是不大容易的。不过,更推荐自己定义一个专门的项目drv驱动文件。本身sconscript已经定义比较完整了,首先编译bsp目录下和rtt源代码的common部分文件,然后根据设计程序中的连接引用关系链接起来。
其实,只是需要用文本编辑工具编程这种古老一些的方式。那么使用vs code或者vim都是不错的选择,其实差别不大。
就是用vi编辑代码,然后用scons编译链接,方法虽然笨一些,没有专用的IDE方便,但不大影响效率的。
4.4 代码驱动,可以用三种思路,
- 参考ls1c的驱动,这个开发板的驱动比较齐备,对应修改框架就好了。不过,这个里面的组织有所不同,增加了libraries部分,需要仔细分析。
- 参考losson的pnom和debian源码找到对于硬件访问的方式和地址直接修改。
- 完全参考手册中的定义和寄存器访问循环,这个方法还是比较靠谱的。
结合以上三种方法,可以比较好地完成开发过程。

5 有个bug。还是没搞清楚启动过程中需要输入的console从哪里录入。是龙芯板子的usb口连接键盘输入还是用uart连接的tty接口输入。我调试的过程,哪个连接都没有反应,直接跳到默认的rtt系统了。而且在rtt系统没又输入回传。有系统输出没有回传。更换了usb键盘的接口就正常进入pmon了。但UART0串口调试的回传好像还没有调试好,继续调试。

也不懂是硬件的问题还是软件的问题,这个坑不过,连debian都进不去。



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

109

帖子

1

粉丝