日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

一步步玩pcDuino3--mmc下的裸机流水灯

發布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步玩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下的裸机流水灯的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。