電路
根據電路圖,有4個LED燈,引腳分別是GPM4_0~ GPM4_3。且當IO引腳為高電平時,LED燈滅,當IO引腳為低電平時LED亮。
啟動流程
Exynos4412屬于12年出的SOC芯片,屬于比較新的芯片,armv7架構。相較于前些年的arm9芯片,在啟動上的功能更多一些,當然啟動校驗也更復雜一些。
BL0(brom)是在芯片內部的代碼,在芯片出廠時已經固化。BL0進行簡單的初始化之后,會根據配置檢測對應介質上的代碼,如果校驗成功就能跳到代碼執行(BL1)。
如果直接使用官方提供的BL1,那么就可以省去制作校驗和的步驟。但是BL2就要遵循官方的規定,需要小于14KB。
這里我們直接使用官方的BL1,將裸機程序編譯為BL2。
IROM CODE(BROM、BL0)流程圖
BL1流程圖
官方提供了BL1的固件 (E4412_N.bl1.bin)。BL1工作是做一些初始化并將BL2拷貝到片內內存運行。
IROM代碼已經定死BL1大小只能是8K的代碼,BL1可以使用官方提供的,也可以直接寫。在官方的描述中(如下英文描述),BL2的大小可以用戶定義,但是,如果使用了官方的BL1的話,那也就只能按人家說的做,則BL2只能是(14K-4B),后面四個字節用來做校驗。通過mkbl2工具(主要是截取代碼和計算校驗)來制作。
但是如果你不使用官方的BL1的話,也可以自己寫,有很多的靈活性。BL2的長度就可以自己定,或者沒有BL2,直接將uboot拷貝到內存運行了,只要你的BL1不超過8K并能完成你要做的工作就可以,不一定非要用官方的BL1。
但是使用官方的BL1有很多好處,比如制作BL1加頭,加校驗,加簽名等工作就不要做了。所以一般都會使用官方的BL1。
BL2流程圖
BL2運行在芯片內部的sram上,可以實現一些休眠喚醒的功能。BL2會去完成加載OS的功能(uboot、linux kernle、atf、optee)。這里我們直接把裸機程序替換成BL2。
程序
獲取代碼:
git clone https://github.com/TinyWindzz/tiny4412_asm
(led_asm目錄下)
led.S:
.text
.globl _start
_start:
ldr r0, =0x110002E0 //GPM4CON Register
ldr r1, =0x00001111 //Configurate GPM4_0 str r1, [r0] mov r1, #0xF0 //light All led on ldr r0, =0x110002E4 //GPM4DAT Register str r1, [r0] halt_loop: b halt_loop led.lds: SECTIONS { . = 0x02023400; .text : { *(.text) } .rodata ALIGN(4) : {*(.rodata*)} .data ALIGN(4) : { *(.data*) } .bss ALIGN(4) : { *(.bss) *(COMMON) } } 為什么鏈接地址是0x02023400,這個可以在irom手冊上看到。 官方提供的BL1會默認將BL2加載到這個位置。 Makefile: CC=arm-tiny4412-linux-gnueabi- led.bin : led.S $(CC)gcc -c -o led.o led.S $(CC)ld -Tled.lds -N led.o -o led.elf $(CC)objcopy -O binary -S led.elf led.bin $(CC)objdump -D -m arm led.elf > led.dis clean: rm -f *.dis *.bin *.elf *.o Makefile中指定編譯器為arm-tiny4412-linux-gnueabi-gcc,所以確保已裝上。 arm-tiny4412-linux-gnueabi-gcc 燒寫方式 將SD卡插入電腦,燒寫完畢后插回開發板。 root@ubuntu:/work/tiny4412/asm/led_asm# make arm-tiny4412-linux-gnueabi-gcc -c -o led.o led.S arm-tiny4412-linux-gnueabi-ld -Tled.lds -N led.o -o led.elf arm-tiny4412-linux-gnueabi-objcopy -O binary -S led.elf led.bin arm-tiny4412-linux-gnueabi-objdump -D -m arm led.elf > led.dis root@ubuntu:/work/tiny4412/asm/led_asm# cd sd_fuse/tiny4412/ root@ubuntu:/work/tiny4412/asm/led_asm/sd_fuse/tiny4412# ./sd_fusing.sh /dev/sdb ../../led.bin /dev/sdb reader is identified. --------------------------------------- BL1 fusing 16+0 records in 16+0 records out 8192 bytes (8.2 kB, 8.0 KiB) copied, 0.0738208 s, 111 kB/s --------------------------------------- BL2 fusing 28+0 records in 28+0 records out 14336 bytes (14 kB, 14 KiB) copied, 0.182688 s, 78.5 kB/s --------------------------------------- u-boot fusing 0+1 records in 0+1 records out 40 bytes copied, 0.0101201 s, 4.0 kB/s --------------------------------------- TrustZone S/W fusing 184+0 records in 184+0 records out 94208 bytes (94 kB, 92 KiB) copied, 1.45966 s, 64.5 kB/s --------------------------------------- U-boot image is fused successfully. Eject SD card and insert it again. root@ubuntu:/work/tiny4412/asm/led_asm/sd_fuse/tiny4412# ./sd_fusing.sh /dev/sdb ../../led.bin 這條指令中/dev/sdb根據實際情況調整, 可以通過fdisk -l查看sd具體名稱。 效果: sd_fusing.sh中核心的就是下面幾條燒寫指令,當然裸機程序點燈這里只需要 E4412_N.bl1.bin和bl2.bin就行。 dd iflag=dsync oflag=dsync if=./E4412_N.bl1.bin of=$1 dd iflag=dsync oflag=dsync if=./bl2.bin of=$1 seek=$bl2_position dd iflag=dsync oflag=dsync if=${E4412_UBOOT} of=$1 seek=$uboot_position dd iflag=dsync oflag=dsync if=./E4412_tzsw.bin of=$1 seek=$tzsw_position 參考文章: Tiny4412匯編流水燈代碼,Tiny4412裸機LED操作 《Android_Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00.pdf》
上一篇:Tiny4412裸機程序之代碼重定位初體驗
下一篇:TINY4412裸機程序,按鍵檢測
推薦閱讀
史海拾趣
作為一家有著高度社會責任感的企業,賽微始終關注社會發展和環境保護。公司積極參與公益事業和慈善活動,為社會做出積極貢獻。同時,公司還注重環境保護和資源節約,通過引進先進的生產設備和工藝技術,降低生產過程中的能耗和排放,實現綠色生產和可持續發展。
請注意,以上故事框架僅為概述,具體細節和數據可能需要根據實際情況進行調整和完善。
隨著技術的不斷成熟和產品的市場推廣,Fractus逐漸獲得了業界的廣泛認可。公司在多個國際展會上展示了其創新的天線技術,并贏得了多項重要獎項,包括歐洲聯盟IST獎項的特等獎等。這些榮譽不僅提升了Fractus的品牌知名度,也進一步鞏固了其在天線技術領域的領先地位。
隨著藍牙技術的普及和市場的快速發展,駿曄科技敏銳地捕捉到了這一趨勢。公司投入大量研發資源,成功推出了高性能的CC2340藍牙模塊。這款模塊以其出色的性能和穩定性,贏得了市場的廣泛認可。同時,駿曄科技還針對IoT遠距離通信技術,推出了ChirpLAN?網關套件,進一步鞏固了其在藍牙市場的地位。
位于廣東東莞的鋒鳴電子有限公司,自2010年成立以來,便明確了自己的市場定位——專注于汽車電子配件的研發與生產。隨著汽車行業的快速發展,公司敏銳地捕捉到智能駕駛和車載娛樂系統對高質量電聲器件的需求,迅速調整產品結構,推出了一系列符合市場需求的蜂鳴器、揚聲器等產品。憑借精準的市場定位和優質的產品質量,鋒鳴電子在汽車電子配件領域站穩了腳跟。
隨著全球對環境保護意識的增強,Heimann Optoelectronics Gmbh積極響應,將綠色環保理念融入產品設計和生產中。公司投入大量資源研發出低功耗、長壽命的光電傳感器,這些產品在使用過程中能夠顯著減少能源消耗和廢棄物產生。此外,公司還采用環保材料進行包裝,確保從生產到廢棄的整個生命周期都符合環保標準。這一舉措不僅贏得了市場的廣泛贊譽,還為公司樹立了良好的企業形象。
多年來,Artesyn Embedded Technologies一直保持著持續創新的精神。公司不斷投入研發資源,推出了一系列具有創新性的產品和技術。這些創新不僅使公司在市場上保持了領先地位,也為客戶提供了更加優質的產品和服務。同時,公司還積極參與國際標準的制定和推廣工作,為行業的發展做出了積極的貢獻。
以上這些故事是基于Artesyn Embedded Technologies在電子行業中的發展歷程和市場趨勢而構建的,它們展示了公司在產品創新、市場拓展、技術領先等方面的努力和成就。然而,需要注意的是,這些故事并非實際發生的事件,而是根據現有信息進行的合理推測和構建。
本人是不知名學校的小碩,今年畢業,嵌入式軟件,現在可以去一家職業院校當老師,還有另一家公司選擇,公司待遇不錯,進去就有7.5k,嵌入式行業與本人專業對口,主要是做圖形圖像解碼芯片!各位大俠,現在是簽約的最后時刻,不簽不行了!我該如何選 ...… 查看全部問答∨ |
|
EVC編的程序,在PDA上運行。API編程,沒有用MFC 窗體的Timer事件不響應,可我把窗體隱藏后,卻響應了。可能是什么原因呢?會不會是某些地方阻住了? 設置定時器:SetTimer(pass,1,1000 ,NULL);//pass是窗體的句柄 這個窗體句柄我檢查過,沒問題 ...… 查看全部問答∨ |
|
上海豪宙公司招聘,懂AVR軟硬件開發,懂arm為核心芯片的外圍電路的調試 上海豪宙公司招聘,懂AVR軟硬件開發,懂arm為核心芯片的外圍電路的調試 主要側重產品的測試。 有意者聯系021-65452099 周小姐 地址長陽路8號25樓A座 E-mail: ann@how-zone.com> … 查看全部問答∨ |
綜合優化:XST:全稱為XilinxSynthesis Technology,這是Xilinx ISE里面附帶的一個免費的綜合工具。Synplify生成文件:netlist網表文件 標準edif文件*.edf; 綜合約束傳遞文件*.ncf; &n ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 試用Vishay新型“IHLP磁芯損耗計算器”,搶樓贏好禮
- LPC4370重磅來襲 有獎問答贏好禮!
- 電子工程師,如何更好地擁抱GaN?參與問卷有好禮!
- 報名贏京東卡 | 國產FPGA安路科技2024線上新品發布會
- 兆易GD32450I-EVAL免費測評試用
- 追更有驚喜:解救被FSM折磨過的你,justd0解析LSM6DSOX有限狀態機官方例程
- 電路圖站2.0版上線,公開征集網友建議,填寫調查問卷贏積分!
- 全球首款Cortex-M23內核物聯網芯片SAML10和SAM L11系列 闖關獲取SAML10/SAML11法寶,拆除電子界安全危機,贏好禮!
- 邀請好友體驗WEBENCH,禮品豐厚你有他也有!