Lab 6:uC/OS II
為什么80%的碼農都做不了架構師?>>> ??
?
目標:
移植uC/OS?II到RPi上,實現兩個任務的調度。這兩個任務能輪流點亮LED,并通過串口發送消息表明自己正在運行
具體步驟:
助教給的代碼已經很完整了,只要對目錄里的usrApp.c代碼改一改就行了。
一、修改usrApp.c:
原來的代碼中已經有usrApp1和usrApp2兩個函數輸出運行顯示,只要在里面加上控制led亮滅的語句就行了。參考Lab5中的blinker.c代碼。具體代碼如下:
| #include?"uart.h" #include?"ucos/includes.h" extern?void?PUT32?(?unsigned?int,?unsigned?int?); #define?GPSET0??0x2020001C #define?GPCLR0??0x20200028
void?userApp2(void?*?args) { while(1) { uart_string("LED?OFF"); PUT32(GPSET0,1<<16); OSTimeDly(1000); } }
void?userApp1(void?*?args) {
while(1) { uart_string("LED?ON"); ??????? PUT32(GPCLR0,1<<16); OSTimeDly(500); } } |
因為extern?void?PUT32?(?unsigned?int,?unsigned?int?);所以需要把lab5中的start.s匯編文件考到當前目錄。
二?、make:
安裝yagarto
到官網http://www.yagarto.de/#download下載YAGARTO?GNU?ARM?toolchain?(37?MB)和YAGARTO?Tools(2?MB)
安裝后就可以make了。
修改makefile
編譯前需要重新配置makefile中的?INCLUDEPATH??=?"C:/workspace/ucos_raspberryPi/h"?為實際工程的"h"文件夾所在的位置
還有makefile最后一行多了一個點
|
ARMGNU??=?arm-none-eabi
INCLUDEPATH??=?"E:\2012-2013年春夏學期\嵌入式\ucos_raspberryPi\h"
COPS?=?-Wall?-O2?-nostdlib?-nostartfiles?-ffreestanding?-mcpu=arm1176jzf-s?-I?$(INCLUDEPATH)
gcc?:?kernel.img
OBJS?=?build/startup.o?
OBJS?+=?build/uart.o OBJS?+=?build/timer.o OBJS?+=?build/interrupts.o
OBJS?+=?build/OS_Cpu_a.o OBJS?+=?build/OS_Cpu_c.o
OBJS?+=?build/ucos_ii.o
OBJS?+=?build/main.o OBJS?+=?build/userApp.o
OBJS?+=?lib/libc.a OBJS?+=?lib/libgcc.a?
clean?: rm?-f?build/*.o rm?-f?*.bin rm?-f?*.hex rm?-f?*.elf rm?-f?*.list rm?-f?*.img rm?-f?build/*.bc
build/%.o?:?port/%.s $(ARMGNU)-gcc?$(COPS)?-D__ASSEMBLY__?-c?-o?$@?$<
build/%.o?:?init/%.s $(ARMGNU)-gcc?$(COPS)?-D__ASSEMBLY__?-c?-o?$@?$<
build/%.o?:?port/%.c $(ARMGNU)-gcc?$(COPS)??-c?-o?$@?$<
build/%.o?:?bsp/%.c $(ARMGNU)-gcc?$(COPS)??-c?-o?$@?$<
build/%.o?:?usrApp/%.c $(ARMGNU)-gcc?$(COPS)??-c?-o?$@?$<
build/ucos_ii.o?:?ucos/ucos_ii.c $(ARMGNU)-gcc?$(COPS)?ucos/ucos_ii.c?-c?-o?build/ucos_ii.o
kernel.img?:?raspberrypi.ld?$(OBJS) $(ARMGNU)-ld?$(OBJS)?-T?raspberrypi.ld?-o?ucos_bcm2835.elf? $(ARMGNU)-objdump?-D?ucos_bcm2835.elf?>?ucos_bcm2835.list $(ARMGNU)-objcopy?ucos_bcm2835.elf?-O?ihex?ucos_bcm2835.hex $(ARMGNU)-objcopy?ucos_bcm2835.elf?-O?binary?ucos_bcm2835.bin $(ARMGNU)-objcopy?ucos_bcm2835.elf?-O?binary?kernel.img |
之后啟動cmd?到ucos的所在目錄make
在ucos的當前文件夾里會生成50k的kernel.img
三、啟動
把生成的kernel.img改名為ucos.img,把他拷貝到樹莓派sd卡的boot目錄下.
修改啟動配置文件config.txt?加上一句”kernel=ucos.img”(有的話改一下)。
啟動樹莓派。發現樹莓派的ACTled燈會間斷的亮滅。
開啟putty連接樹莓派串口得到兩個線程的輸出:
?
?浙江大學嵌入式課程非榮譽出品
轉載于:https://my.oschina.net/daijy/blog/134752
總結
以上是生活随笔為你收集整理的Lab 6:uC/OS II的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: llinux下kvm虚拟化
- 下一篇: 网课查题接口 搜题公众号对接题库教程 (