首页 NiosII下UCOS和移植Linux教程(中文)

NiosII下UCOS和移植Linux教程(中文)

举报
开通vip

NiosII下UCOS和移植Linux教程(中文) 1 实验五 uc/OS-II 实时操作系统在 Nios II 中的运行 一. 实验目的:了解在 NIOSII 中使用 uc/OSII 实时操作系统的基本方法。 二. 实验说明: uc/OS-II 已经在世界范围内得到广泛的使用,包括手机、路由器、集线器、 不间断电源、飞行器、医疗设备及工业控制等。实际上,uc/OS-II 已经通过了非 常严格的测试,并且得到了美国航空航天管理局(FAA)的安全认证,可...

NiosII下UCOS和移植Linux教程(中文)
1 实验五 uc/OS-II 实时操作系统在 Nios II 中的运行 一. 实验目的:了解在 NIOSII 中使用 uc/OSII 实时操作系统的基本方法。 二. 实验说明: uc/OS-II 已经在世界范围内得到广泛的使用,包括手机、路由器、集线器、 不间断电源、飞行器、医疗设备及工业控制等。实际上,uc/OS-II 已经通过了非 常严格的测试,并且得到了美国航空航天管理局(FAA)的安全认证,可以用 于飞机、航天器等与人性命攸关的控制系统中1。因此,uc/OS-II 在工业等实时 性需求比较强的领域应用非常广泛,我们的学习套间提供了在 NiosII 系统中运 行 uc/OS-II 的例子(“ucosII_test”),该例子定义了两个任务:Task1 和 Task2, 两个任务交替执行。例子虽然简单,但可以作为 uc/OS-II 在 NiosII 系统中运行 的演示。同学们可以参考 NiosII 的软件开发手册以及 uc/OS-II 的发明人——Jean J. Labrosse 的著作“MicroC/OS-II The Real-Time Kernel”(Second Edition)的中译 本《嵌入式实时操作系统 uc/OS-II》(第二版,邵贝贝等译),研究和设计出功能 更强、更符合实际应用的程序。 一、 参考前面的方法建立一个工程软件工程; 二、 打开工程的.syslib 工程属性,按下图所示修改编译属性: 在“System Library Contents”的“RTOS:”下拉框选择“MicroC/OS-II”, 以及右边的程序段都选择 SDRAM,因为使用了操作系统,内部 ram 比较小会 容不下,在这里我们选择 SDRAM 作为 uc/OSII 的运行环境。 MicroC/OS-II 的各个选项的配置可以通过点击“RTOS Options…”按钮进 行选择和配置,如下图所示: 1 《嵌入式实时操作系统 uc/OS-II》(第二版) 中国电子前沿站 http://www.emb-cn.com 2 具体操作和配置按照需要和参考 ALTERA 的软件开发手册。本例子采用默 认配置。 三、 做完这些配置后,就可以添加程序了,例如,我们这个例子创建了两个 任务,这两个任务交替运行: #include #include "includes.h" #include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h" #include "lcd_1602.h" /* 定义任务堆栈大小*/ #define TASK_STACKSIZE 2048 OS_STK task1_stk[TASK_STACKSIZE]; OS_STK task2_stk[TASK_STACKSIZE]; /* 定义任务的优先级 */ #define TASK1_PRIORITY 1 #define TASK2_PRIORITY 2 中国电子前沿站 http://www.emb-cn.com 3 /* 任务 1 运行,然后阻塞 3 秒钟,切换到其它任务 */ void task1(void* pdata) { alt_u8 led; while (1) { led = 0x1; *(unsigned int *)PIO_LED_BASE = led; initialcd(); displaystring(0x80,"SOC:HelloWorld!"); displaystring(0xC0,"Task1 Running..."); printf("Task1 Running...@@@@@@@@@@@@@@@ \n"); OSTimeDlyHMSM(0, 0, 3, 0); } } /*任务 2 运行,然后阻塞 3 秒钟,切换到其它任务 void task2(void* pdata) { alt_u8 led; while (1) { led = 0x2; *(unsigned int *)PIO_LED_BASE = led; initialcd(); displaystring(0x80,"uc/OS-II--Demo!"); displaystring(0xC0,"Task2 Running..."); printf("Task2 Running...$$$$$$$$$$$$$$$ \n"); OSTimeDlyHMSM(0, 0, 3, 0); } } /* main 函数建立 2 个任务,然后启动内核,操作系统即转入运行内核 */ int main(void) { OSTaskCreate(task1, NULL, (void *)&task1_stk[TASK_STACKSIZE-1], TASK1_PRIORITY); OSTaskCreate(task2, NULL, (void *)&task2_stk[TASK_STACKSIZE-1], TASK2_PRIORITY); OSStart(); return 0; } 结论:从本例可以看出,在 NiosII 中运行 uc/OSII 并不难,关键是实际应用中 如何建立正确的任务,以及各个任务如何调度等等,这些内容建议仔细参考《嵌 入式实时操作系统 uc/OS-II》等相关书籍。 中国电子前沿站 http://www.emb-cn.com 4 实验六. 学习开发套件 V3.0 中嵌入 Uclinux 的步骤和方法 在学习开发套件 V3.0 中嵌入 Uclinux 的步骤和方法,硬件系统为 EP1C6,2Mflash,8Msdram. 开发环境:SOPC 学习开发套件 V3.0,型号 EP1C6。QII5.1+SP2,NiosII IDE5.1+SP1。 一 .安装 nios2linux 开发包 nios2linux-1.4 二 .建立硬件系统 1. QII 中建一工程 linux_nios,并添加 NIOSII CPU,QII 工程和平常的建 立并没有什么区别,只要得加上 flash 和 sdram,因为这里只是对 linux 的 简单调试,所以 SOPC 中只添加 LED 和 UART 等几个简单外设。如下图: 2. 注意为防止不必要的麻烦,这里尽量使用默认名字。 如果想用 USB 连接电脑,在 QII 中把串口连接到 USB 线的 IO 管脚上即可。 我们的工程中是两个口都接了,使用串口或者 USB 口都行。 三.建立软件环境 打开 NIOSII IDE。 3.1 建立 linux 内核 file-> new-> project 后如下图: 中国电子前沿站 http://www.emb-cn.com 5 注意:在安装 Microtronix_uclinux_nios2 开发包后在 IDE 中分增加出如上图 的 Microtronix NiosII 选项如果没有可以按下面方法解决: 1)、打开 cmd,在 开始->运行 那里输入 cmd 2)、cd 到你的 NiosII 的工作目录下面,我的 NiosII 安装在 D 盘,如下: 中国电子前沿站 http://www.emb-cn.com 6 3)、在这里输入命令 nios2-ide.exe –clean,进入 NiosII IDE 的 clean 模 式,选择 workspace: 这是在 New->Other 那里你就可以看到那个 linux 的目录项了。关了 IDE 窗 口和 cmd 窗口,这样就可以正常看到 Microtronix_linux 了。 中国电子前沿站 http://www.emb-cn.com 7 3.2 输入内核名字 按 next: finish 完成 四. 构建内核: 4.1 右键内核名,在弹出菜单中选择 Configure Kernel 如下: 中国电子前沿站 http://www.emb-cn.com 8 后进入如下界面: 因为 flash 只有 2M 因此构造的内核应尽可能的小,其大小不能超过 1M。因此在 这里要去掉没用到的选项: 按空格键 取消或者选择 General setup: 中国电子前沿站 http://www.emb-cn.com 9 processor type and features:这里 support,不是 Altera 在 Device drivers 除以下默认及保留串口外,其它都去掉 Generic Driver Options ---> Memory Technology Devices (MTD) ---> Block devices ---> 串口位置及设置如下: Device drivers--ÆCharacter devices --->Serial drivers --->: 设置完这里后其它便可使用默认,然后 esc 退出保存。 中国电子前沿站 http://www.emb-cn.com 10 4.2 修改两个脚本文件 D:\altera\kits\nios2_51\bin\eclipse\plugins\com.microtronix.nios2lin ux.kernel_1.4.0\linux-2.6.x\arch\nios2nommu\kernel\ vmlinux.lds.inc文 件以及同目录下的 vmlinux.lds.S 文件 稍作修改以占用更少的空间: 在 D:\altera\kits\nios2_51\bin\eclipse\plugins\com.microtronix.nio ux.kernel_1.4.0\linux-2.6.x\drivers\mtd\maps\ 中找到 microtronix.c 文 件 修改以下画线部分如下图: 中国电子前沿站 http://www.emb-cn.com 11 五..完成后编译内核: 经过相当长时间的等待便可看到编译生成的内核 vmlinux.bin 二进制文件: 中国电子前沿站 http://www.emb-cn.com 12 六.用 flash programer 下载此内核到 flash 中的从 0 地址开始: 七.建立文件系统: 7.1 在 IDE 中 File->new->project Next 输入名字: 继续 Next: 中国电子前沿站 http://www.emb-cn.com 13 NEXT:点击 Install Minimal: Finish 后有警告,不管,确定后完成。 7.2 编译此文件系统后生成 romfs.bin 文件,同上面烧写内核的方法,把此 文件烧写到 flash 中去,注意 offset 地址为:0x100000 此图中我把 romfs.bin 文件拷到了 C 盘,所以 file 中是:c:\romfs.bin 中国电子前沿站 http://www.emb-cn.com 14 八.ok 下载成功后,接上 USB (或者串口),打开串口调试工具,按一下板子上的 reset 键后可看到串口工具接收窗中显示如下信息:linux 系统便启动成功了。 输入命令:ls bin 中国电子前沿站 http://www.emb-cn.com 15 九.建一个 LED 闪动程序。 9.1 在 IDE 中 File->New->project: 一路 next 到 finish. 9.2. 建一个 C 文件: 在弹出的对话窗输入文件名:hello.c 注意要加.c 后缀: 中国电子前沿站 http://www.emb-cn.com 16 9.3 把…altera/kits/nios2/examples/software/linux/apps 目录下 samples/hello 文件夹里的 makefile 复制到 my_app 工程下。 注意:makefile 文件的选择是有讲究的。具体请参阅:在目录 ..altera\kits\nios2_51\documents\linux\ 下的 Linux Reference Guide.pdf 文档第 19 页。 在 hello.c 中输入以下程序: #include main() { int i; char led=0x1; while(1) { for(i=0;i<100000;i++); * (int*) 0x80202040=led; //0x80202040是led灯的地址 led=~led; } } 说明:其它外面地址在内核工程 nios2_system.h 中定义,如下图 中国电子前沿站 http://www.emb-cn.com 17 9.4 右键 my_app 工程:选择如下图: 在弹出以下对话窗: 点 Ceate 完成。 中国电子前沿站 http://www.emb-cn.com 18 9.5.右键 my_app 工程:选择如下图:开始编译程序。 9.6 编译完成后没问题的话就可生成 hello.exe 运行文件: 中国电子前沿站 http://www.emb-cn.com 19 9.7.把生成的 hello.exe 文件复制到文件系统目录下的 BIN 文件夹,如下图: 9.8.编译此文件系统: 9.10.最后把生成的文件系统 romfs.bin 用 flashprogramor 下载到 flash 中。 方法和上面烧写文件系统到 flash 相同。 十.于是我们便完成了整个 linux 的移植和简单开发过程。 运行结果: 插好 USB 线,打开串口调试工具,按一下 reset: 输入 ls bin 回车。 中国电子前沿站 http://www.emb-cn.com 20 输入 hello 回车 此时便可看到核心板上两个 LED 交替闪动。 结论:可见,在 NiosII 中移植 ucLinux 并不难,关键是人的 ideal,即用它来 实现什么功能呢?那就是您来发挥的时候了,呵呵,努力! 中国电子前沿站 http://www.emb-cn.com
本文档为【NiosII下UCOS和移植Linux教程(中文)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_828858
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:20
分类:互联网
上传时间:2011-12-04
浏览量:23