一步步玩pcDuino3--mmc下的裸机流水灯
? ? ? ? 第一部分是玩pcduino3下的裸機。這個過程能夠讓我們更好的理解嵌入式系統,熟悉我們使用的這個平臺。
? ? ? ? 首先介紹下開發環境:
虛擬機:VMware? Workstation?10.0.2 build-1744117
系統:Linux slackware 3.2.29-smp #2 SMP?
? ? ? ? 交叉編譯器:arm-linux-gnueabihf- ? ?版本:gcc version 4.8.2 20130805 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2013.08 - Linaro GCC 2013.08)
? ? ? ? 編輯器:Vim
? ? ? ? 硬件連接例如以下:
? ? ? ? USB 5V電源線和USB轉TTL線連接到pcduino3上,如圖:
? ? ? ??
? ? ? ??
? ? ? ? 說是流水燈,事實上我只用到兩個燈,這個板子的LED不多,并沒有專門的流水燈配置。
我們先看一下原理圖:
? ? ? ??
? ? ? ? 我只用到TX_LED和RX_LED兩個燈:
? ? ? ? 我們用到這里的TX和RX兩個燈。又一次回到原理圖看看哪兩個管腳來控制這兩個LED的:
? ? ? ? PH15和PH16分別控制TX_LED和RX_LED。
? ? ? ? 在弄清楚硬件連接后。在正式編寫匯編代碼之前。我們先理清A20的boot順序,依據其datasheet上簡潔的介紹。它支持mmc啟動。也支持nand flash啟動,而且mmc啟動優先于nand flash啟動。A20的datasheet并沒有具體寫出boot的硬件細節,大概的估摸出大概過程例如以下:mmc啟動條件下,硬件會自己主動將mmc卡中位于偏移量在8K和40K之間的數據搬移到內部的SRAM1和SRAM2中:
? ? ? ? 如今的uboot支持spl方式,就是位于前32k的部分首先在SRAM中執行。然后初始化DRAM和MMC接口,然后再搬移興許的uboot到內存中執行,再進行載入kernel的操作。
? ? ? ? 除了這一點。還要注意,MMC啟動時須要加上特定的頭,這里我們要用到uboot/tools里面的mksunxiboot工具加這個頭。這個頭由32個字節的結構體boot_file_head定義,這個結構體里面有MAGIC和check sum。然后生成一條跳轉代碼來跳轉到真正地代碼處進行執行。
? ? ? ? 代碼分為兩個匯編文件:start.S和led.S。start.S設定棧指針,然后就跳到led.S中的主函數中。
? ? ? ? start.S代碼例如以下:
? ? ? ??
.text
.global _start_start:ldr sp, =0x00007f00bl mainhalt_loop:b halt_loop? ? ? ? led.S例如以下:
.equ PH_CFG1, 0x01C20900
.equ PH_CFG3, 0x01C20904.equ PH_PULL0, 0x01C20918
.equ PH_PULL1, 0x01C2091C.equ PH_DAT, 0x01C2090C.global mainmain:ldr r0,=PH_CFG1ldr r1,=0x10000000str r1, [r0]ldr r0,=PH_CFG2ldr r1,=0x00000001str r1, [r0]ldr r0,=PH_PULL0ldr r1,=0x55555555str r1, [r0]ldr r0,=PH_PULL1ldr r1,=0x55555555str r1, [r0]
ledloop:ldr r0,=PH_DATldr r1,=0x000f0000str r1, [r0]bl delayldr r0,=PH_DATldr r1,=0x0000f000str r1, [r0]bl delayb ledloopdelay:ldr r3,=0xfffffdelay1:sub r3,r3,#1cmp r3,#0x0bne delay1mov pc,lr 代碼非常easy,編譯完后記得使用mksunxiboot工具處理一下,最后使用dd命令燒寫到8K偏移處。
? ? ? ? 最后就能夠看到兩個燈一閃一閃亮晶晶了,如今還沒有初始化時鐘,注意調整延時,不然效果不大對。
? ? ? ??
? ? ? ??
? ? ? ??
轉載于:https://www.cnblogs.com/ldxsuanfa/p/10552730.html
總結
以上是生活随笔為你收集整理的一步步玩pcDuino3--mmc下的裸机流水灯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样写好作文的技巧?怎样写字又快又好看?
- 下一篇: 冰冻三尺下一句是什么呢?