龙芯俱乐部开源技术社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 11839|回复: 8

关于在smart_loong(LS1C)开发板RT-Thread的移植

[复制链接]

19

主题

79

帖子

3533

积分

论坛元老

Rank: 8Rank: 8

积分
3533
发表于 2015-6-27 23:22:06 | 显示全部楼层 |阅读模式
本帖最后由 chinesebear 于 2015-9-14 20:58 编辑

教程for smart loong:http://pan.baidu.com/s/1bnyQa8B
龙芯智龙开发板教程rtt for smart loong:链接



关于在smart_loong(LS1C)开发板RT-Thread的移植
by chinesebear(swubear@163.com)
RT-Thread RTOS是一款来自中国的开源实时操作系统,由国内一些专业开发人员开发、维护。它不仅仅是一款高效、稳定的实时核心,也是一套面向嵌入式系统的软件平台,覆盖了全抢占的实时操作系统内核,小巧而与底层具体实现无关的文件系统,轻型的TCP/IP协议栈以及轻型的多窗口多线程图形用户界面。
              开源龙芯智龙开发板用的是loongson 1C主控芯片,该芯片一共有12个串口,其中uart2是智龙的调试串口。 我大概将移植分为3个级别: CPU级、板级(BSP,board support package )、应用级(移植应用程序)。本次移植主要是uart2 配置成调试串口,通过串口进入RTT(RT-Thread)内部,属于BSP。BSP移植一般是找一个类似的开发板(同一款CPU更好)的代码,进行修改来达到移植的目的。龙芯的CPU是比较小众的,很少有系统愿意支持它。庆幸的是在此前,有人移植过loongson 1B的RTT,1B跟1C几乎一样,所以我们可以通过简单修改1B的RTT来在 1C上运行。
              RTT原码的下载连接:https://github.com/RT-Thread/rt-thread
step1.配置RTT的shell。
RTT的shell是finsh,这也是用户与系统的交互的工具。finsh是RTT的组件,需要在bsp/ls1bdev/rtconfig.h定义相应的宏才能在编译的时候将finsh加到系统包中。
step2.认识RTT驱动架构.
              简单说一下RTT驱动架构。一般系统的设备分为字符设备、网络设备等。串口设备属于字符设备。RTT提供IO管理层用来管理这些设备的初始化、读、写、开、关。
              这些函数具体的内容需要自己实现,把地址赋给结构体rt_device中的函数指针。通过函数 rt_device_register()将设备驱动(结构体rt_device中的各个函数纳入驱动管理层)注册IO管理层,这样RTT通过查找设备名称(比如“uart2”)找到相应的rt_device结构体,并得到了操作设备所需要的具体函数(开关读写等)。
step3.配置调试串口uart2.
              串口配置主要是关于串口的几个寄存器的配置,包括波特率、RX中断、全局中断号。配置波特率和RX中断使能在bsp/ls1bdev/drivers/uart.c。函数rt_uart_init()初始化串口寄存器,此函数的地址将会赋给rt_device结构体中的init函数指针。
              3.1在初始化工作开始之前,需要清除该设备的中断。
              3.2设置线路控制寄存器,这个寄存器中bit7是用来控制是否设置波特率寄存器的。
              3.3设置波特率寄存器,波特率寄存器。DEV_CLK= 252000000 (即252MHz,1C的主频), UART_BUADRATE = 115200(波特率115200Hz)。波特率寄存器有两个,MSB和LSB。为什么要两个寄存器,因为波特率配置数有时候很大,需要这两个寄存器(2个8bits)的存储。
              3.4设置完波特率,需要回复线路控制寄存器LCR的bit7的赋值(0)。并且将LCR的末了的两位(bit1和bit0)设置为1,这是设置串口数据的帧格式,即1个开始位+8个数据位+1个停止位。帧格式如下:
              3.5打开RX的中断使能。即设置IER寄存器。
step4.在RTT的BSP包中配置调试串口uart2.
              在文件bsp/ls1bdev/drivers/board.c中修改。在关键的地方(红框)改成串口2
step5.在应用层初始化的过程中,初始化finsh,配置finsh的输入输出设备uart2。
              在bsp/ls1bdev/applications/startup.c的rtthread_startup()函数中修改。
              在libcpu/mips/loongson_1b/ls1b.h中修改uart2的irq(中断号)4 to 5。
step6.编译RTT。
              6.1打开装有ubuntu14.2的虚拟机,默认诸君已经下载龙芯的GCC包,并且如何用编译工具已经谙熟于胸。实在不了解,移步开源龙芯论坛: http://www.openloongson.org/foru ... d=67&extra=page%3D1
              6.2下载RTT for smart loong原码包。百度云盘:http://pan.baidu.com/s/1gdq4QPl
              6.3用firefox下载rtt2.zip,将其copy到”~/app”下。
              $ cd ~/app
              $ ls
              $ unzip rtt2.zip
              6.4 安装python和scons,这是因为RTT的编译依赖scons,类似makefile之类的。
              $sudo apt-get install python
              $sudo apt-get install scons
              6.5修改编译器路径。在~/app/rtt2/bsp/ls1bdev/rtconfig.py中修改。 我的编译器路径: /opt/opt/gcc-4.3-ls232/bin。编译器命令是一堆bin文件。可以vi,或者直接点击文件,ubuntu会自动调用gedit打开。
              6.5编译RTT。很快生成rtthread.elf,这就是我们要的RTT的包,可以直接在smart loong上直接运行。
              $cd ~/app/rtt2/bsp/ls1bdev/
              $sudo scons
               

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

19

主题

79

帖子

3533

积分

论坛元老

Rank: 8Rank: 8

积分
3533
 楼主| 发表于 2015-6-27 23:30:07 | 显示全部楼层
本帖最后由 chinesebear 于 2015-7-12 14:02 编辑

step7.在smart loong上运行RTT系统。
              step7.1安装tftp服务器。百度云盘:http://pan.baidu.com/s/1eQvqBkQ。下载到windows下,随便建一个文件夹,把解压tfp32.zip,将tftpd32.exe和rtthread.elf放在同一个文件夹。

              step7.2在龙芯的pmon中修改autoload的文件。打开tftpd32.exe。
                            可以看出我的tftp服务器的地址是192.168.3.10。
                            进入pmon。加电后狂按空格键。
                            PMON> set al tftp://192.168.3.10/rtthread.elf
                            PMON> reboot
              step7.3运行RTT。
              step7.4按tab键。可以echo出几个RTT内置的系统命令。关于finsh的命令可以认为的添加,当然函数需要自己实现。
              step7.5执行hello()命令。echo:Hello RT-Thread!
step8.谈谈关于RTT的感受。
              优点:硬实时,免费开源,支持平台多(龙芯这么小众都支持),模块化,高度可裁剪,图形界面,shell,社区活跃。
              缺点:finsh不够power。

最近编译的RT-Thread的ELF文件,大小358KB:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

34

主题

108

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
16630
发表于 2015-6-28 11:40:34 | 显示全部楼层
厉害!!!!

84

主题

465

帖子

44万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
440453
发表于 2015-6-28 14:10:07 | 显示全部楼层
很好!

28

主题

260

帖子

17万

积分

论坛元老

Rank: 8Rank: 8

积分
171297
发表于 2015-6-28 23:51:04 | 显示全部楼层
顶起^^^^

48

主题

257

帖子

4920

积分

新手上路

Rank: 1

积分
4920
发表于 2015-7-2 11:11:00 | 显示全部楼层
赞!

48

主题

257

帖子

4920

积分

新手上路

Rank: 1

积分
4920
发表于 2015-7-2 11:16:13 | 显示全部楼层
网卡移植好没有?

19

主题

79

帖子

3533

积分

论坛元老

Rank: 8Rank: 8

积分
3533
 楼主| 发表于 2015-7-2 12:28:36 | 显示全部楼层
本帖最后由 chinesebear 于 2015-7-2 12:30 编辑
简单平安 发表于 2015-7-2 11:16
网卡移植好没有?

没有。驱动移植安排是这样的:i2c>spi>pwm>networks,龙芯网卡据说稍微难搞。有兴趣的话,大家可以一起研究一下,我平时的时间也很有限。

48

主题

257

帖子

4920

积分

新手上路

Rank: 1

积分
4920
发表于 2015-7-2 17:35:59 | 显示全部楼层
哦,不急。我的水平只能围观,呵呵!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|龙芯俱乐部开源技术社区

GMT+8, 2024-12-15 05:30 , Processed in 0.130464 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表