第一章——2440及4412燒寫程式碼
JZ2440
JZ2440有nor flash和nand flash,可以nor啟動和nand啟動,我習慣把nor中燒入u-boot,平時實驗用nand。可以用如下命令在nor中的u-boot對nand進行燒寫
tftp 30000000 u-boot.bin ; nand erase bootloader ; nand write 30000000 bootloader
用tftp時PC機上要啟動tftp服務軟體,或者用nfs直接從伺服器下載
nfs 30000000 10.5.202.10:/work/nfs_root/boot.bin ; nand erase bootloader ; nand write 30000000 bootloader
燒寫核心和檔案系統同理
關於分割槽可以在u-boot下輸入命令mtd檢視,這是在u-boot程式碼中寫的,可以自行修改,但是為了與核心一致一般為
#: name size offset mask_flags
0: bootloader 0x00040000 0x00000000 0
1: params 0x00020000 0x00040000 0
2: kernel 0x00200000 0x00060000 0
3: root 0x0fda0000 0x00260000 0
傳到記憶體的資料為什麼存到30000000這個位置呢??這就要看u-boot的記憶體分佈
我們往記憶體中傳資料的時候只要不破壞uboot的資料就可以了,由記憶體分佈圖發現0x30000000是個不錯的選擇
tiny4412
tiny4412可以eMMC啟動和SD啟動,由於友善之臂的uboot for tiny4412沒有支援網絡卡,fastboot和superboot不開源,所以一般用dnw或用linux指令碼燒寫SD卡
網路燒寫
uboot for tiny4412沒有支援網絡卡,這讓用網路除錯的人情何以堪
dnw燒寫
8 格式化eMMC, u-boot模式下輸入如下指令來格式化eMMC裝置。
>fdisk -c 1 320 2057 520
執行後會返回分割槽資訊,繼續格式話分割槽1,2,3,4
>fatformat mmc 1:1
這句話意思是對mmc 1裝置的第一分割槽格式作fat格式化。
>ext3format mmc 1:2
>ext3format mmc 1:3
>ext3format mmc 1:4
上面三個指令是分別對eMMC的分割槽2,3,4作ext3格式化。
到此我們完成了對eMMC的裝置的格式化。
接下來我們要想辦法燒錄bl1.bin, bl2.bin, u-boot.bin, tzsw.bin燒錄到eMMC中。
9 從PC端下載韌體到開發板Memory中。
剛才我們重點介紹了dnw, 接下來我們要使用此工具來下載韌體到開發板記憶體中。注意是下載到記憶體,把韌體資料快取起來,到時要燒錄到eMMC中。
首先我們要開啟emmc裝置
u-boot下輸入:
>emmc open 1
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
上面提示emmc開啟成功,注意說明,emmc一旦開啟,需要連續燒錄,燒錄完成後可以關閉emmc.
10 接下來我們要執行dnw
u-boot下面輸入:
>dnw
OTG cable Connected!
Now, Waiting for DNW to transmit data
提示等待資料輸入,這裡就是等待我們從PC端通過DNW傳送資料過來。
此時在PC端終端串列埠,cd到u-boot目錄所在路徑
[email protected]~/u-boot/:
輸入: dwn sd_fuse/tiny4412/E4412_N.bl1.bin
此時u-boot中斷會提示傳送校驗完成,此時已經把bl1.bin通過USB傳送到了memeory的0xc0000000起始地址,大小8KB.
接下來我們燒錄bl1.bin到eMMC中,u-boot下繼續輸入:
>mmc write 1 0xc0000000 0 0x10
會提示寫入資訊,說明已經寫入成功。這個是把剛才從PC端通過dnw下載下來的bl1.bin韌體下載到emmc中,起始0, 16個block, 一個block是512B, 16*512=8*1024=8KB. 這個是bl1.bin的存放位置。
以此類推,燒錄bl2.bin. u-boot.bin, tzsw.bin
-----------------------------------------------------------------------------------------------------------------------------------------------------
u-boot終端繼續輸入:
>dnw
PC端輸入: (注意輸入內容是以 dnw 開始的,前面是當前路徑,便於理解)
[email protected]~/u-boot/: dwn sd_fuse/tiny4412/bl2.bin
u-boot下繼續輸入:
>mmc write 1 0xc0000000 0x10 0x1C
bl2.bin實際大小約14K,分配的空間是16K. 其實是第16個block開始,寫入28個block, 28*512B=14*1024=14K
注意這個區域預分配是32個Block,所以下一個開始是32+16=48
------------------------------------------------------------------------------------------------------------------------------------------------------
u-boot終端繼續輸入:
>dnw
PC端輸入: (注意輸入內容是以 dnw 開始的,前面是當前路徑,便於理解)
[email protected]~/u-boot/: dwn u-boot.bin
u-boot下繼續輸入:
>mmc write 1 0xc0000000 0x30 0x21D
u-boot.bin實際大小約270K,分配的空間是328K. 其實是第48個block開始,寫入541個block, 541*512B=270.5*1024 約270K
------------------------------------------------------------------------------------------------------------------------------------------------------
u-boot終端繼續輸入:
>dnw
PC端輸入: (注意輸入內容是以 dnw 開始的,前面是當前路徑,便於理解)
[email protected]~/u-boot/: dwn sd_fuse/tiny4412/E4412_tzsw.bin
u-boot下繼續輸入:
>mmc write 1 0xc0000000 0x2c0 0xB8
tzsw.bin實際大小約92K,分配的空間是160K. 其實是第704個block開始,寫入184個block, 184*512=92*1024=92K
------------------------------------------------------------------------------------------------------------------------------------------------------
啟動分割槽到此全部寫入完成,注意一定要關閉emmc,
u-boot下繼續輸入:
>emmc close 1
eMMC CLOSE Success.!!
關閉emmc裝置,提示關閉成功。此時我們已經把啟動檔案全部燒錄到了eMMC中。
-------------------------------------------------------------------------------------------------------------------------------------------------------
接下來我們可以把開發板的SW2撥動到NAND啟動,同時u-boot中斷輸入reset, 並在電腦鍵盤按下任意鍵,此時我們可以看到:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
U-Boot 2010.12-00000-g3e284d5-dirty (Jul 04 2014 - 17:40:58) for TINY4412
CPU: S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
APLL = 1400MHz, MPLL = 800MHz
Board: TINY4412
DRAM: 1023 MiB
vdd_arm: 1.2
vdd_int: 1.0
vdd_mif: 1.1
BL1 version: N/A (TrustZone Enabled BSP)
Checking Boot Mode ... EMMC4.41
REVISION: 1.1
MMC Device 0: 3728 MB
MMC Device 1: 1876 MB
MMC Device 2: N/A
Read... Bootmode reg 0x00000000
Get Bootmode reg 0xf3ca4c36
ModeKey Check... run normal_boot
Net: No ethernet found.
Hit any key to stop autoboot: 0
TINY4412 #
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
大功告成啊,我們的u-boot已經成功寫入到了eMMC中,並可以成功啟動。
linux指令碼燒寫SD卡
主要是下面四條命令dd iflag=dsync oflag=dsync if=./E4412_N.bl1.bin of=$1 seek=1
dd iflag=dsync oflag=dsync if=./bl2.bin of=$1 seek=17
dd iflag=dsync oflag=dsync if=../../u-boot.bin of=$1 seek=49
dd iflag=dsync oflag=dsync if=./E4412_tzsw.bin of=$1 seek=705
E4412_N.bl1.bin為廠家自帶,傳說中的bl1bl2.bin為u-boot的14位元組加上校驗碼,傳說中的bl2,主要作用是把u-boot.bin讀到記憶體
u-boot.bin這才是主體
E4412_tzsw.bin為廠家自帶,從名字上看是關於trustzone的,不去理會
fastboot燒寫SD卡
README for FriendlyARM Tiny4412
說明:本u-boot原始碼由三星原廠提供,並由友善之臂修改移植,以適用於Tiny4412開發板平臺。
僅供嵌入式愛好者學習研究之用,友善之臂不對此提供任何技術支援和維護。
-----------------------------------------------------
1. Build uboot
a) 安裝好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)並設定好
環境變數PATH,保證可以正常使用。
b) 解壓 uboot_tiny4412-20130729.tgz 並進入相應的目錄
tar xzf uboot_tiny4412-20130729.tgz
c) 配置 uboot 並編譯
cd uboot_tiny4412
make tiny4412_config
make
d) 編譯 用於生成bl2 的工具
make -C sd_fuse
或者
cd sd_fuse; make
-----------------------------------------------------
2. 製作啟動 Tiny4412 的SD卡
a) 先準備一張4G或以上的SDHC卡
注意:該卡的已有資料將會被破壞,因此請先對SD卡上的資料進行備份。
b) fusing SD card
假設SD卡已被PC Linux識別為/dev/sdb, 以root使用者執行以下命令即可:
cd sd_fuse/tiny4412
./sd_fusing.sh /dev/sdb
-----------------------------------------------------
3. 使用SD卡啟動 Tiny4412 並燒寫Android
a) 將已經制作好的SD卡插到 Tiny4412 板上,撥動S2切換到SDBOOT,同時連線
串列埠線到PC且假設已經準備好。
b) 開發板加電,然後在串列埠控制檯(如minicom),按任意鍵進入uboot 命令列模式
c) 對SD卡進行分割槽
輸入以下uboot命令即可對SD卡進行分割槽:
fdisk -c 0 320 806 518
重新分割槽後,可重新格式化FAT分割槽
fatformat mmc 0:1
d) 進入fastboot模式以燒寫Android
使用USB線連線Tiny4412的MICRO_USB口到PC,然後輸入以下uboot命令:
fastboot
e) 燒寫 Android 到SD卡
首先請準備好Android image,包括: zImage, ramdisk-u.img, system.img
在PC端輸入以下命令進行燒寫:
fastboot flash kernel zImage (燒寫kernel)
fastboot -w (格式化userdata和cache)
fastboot flash ramdisk ramdisk-u.img (燒寫ramdisk)
fastboot flash system system.img (燒寫system)
f) 也可以在PC端通過fastboot燒寫uboot到SD卡
先手動生成bl2.bin
cd sd_fuse/tiny4412
../mkbl2 ../../u-boot.bin bl2.bin 14336
然後輸入以下命令:
fastboot flash fwbl1 E4412_N.bl1.bin
fastboot flash bl2 bl2.bin
fastboot flash bootloader ../../u-boot.bin
fastboot flash tzsw E4412_tzsw.bin
-----------------------------------------------------
4. 使用SD卡啟動 Android
a) 如果是使用HD700,則燒寫完成後直接重啟Tiny4412 即可自動啟動 Android
b) 如果是使用S700,則需要在uboot上設定kernel命令列引數:
setenv bootargs console=ttySAC0,115200n8 androidboot.console=ttySAC0 lcd=S700
saveenv
然後重啟Tiny4412即可。
MiniTools工具燒寫nand
只有 Superboot 配合才能使用 MiniTools 的 USB 下載功能,並且 Superboot 需要工作在 USB 下載模式才行,因此,請先做以下準備工作:
1. 用 SD-Flasher 工具將 Superboot 燒寫到 SD 卡中。
2. 將光碟中的 images/FriendlyARM.ini 檔案拷貝到 SD 卡中的 images 目錄下。
3. 編輯 SD 卡中的 images/FriendlyARM.ini 檔案檔案, 增加以下內容:
USB-Mode = yes
做好準備工具後,按以下步驟連線 PC 和開發板:
1. 將開發板上的 S2 開關切換到 SD 卡模式
2. 上電開機,開發板將進入 USB 下載模式, LCD 上會顯示“ USB Mode: Waiting...”
3. 用 USB 線連線電腦與開發板
4. 連線成功, LCD 上會顯示"USB Mode: Connected"
SD卡離線燒寫nand
1.使用 SD-Flasher 工具燒寫 Superboot 到 SD 卡
2.將如下檔案拷入SD卡
images\Superboot4412.bin Bootloader
images\Linux\zImage Linux Kernel 3.5
images\Linux\ramdisk-u.img Linux 根分割槽映象
Images\Linux\rootfs_qtopia_qt4.img Linux 系統分割槽映象
images\FriendlyARM.ini 系統燒寫配置檔案
3.修改配置檔案images\FriendlyARM.ini,內容如下
#This line cannot be removed. by FriendlyARM(www.arm9.net)
CheckOneButton=No
Action = Install
OS = Linux
LowFormat = No
VerifyNandWrite = No
LCD-Mode = No
CheckCRC32=No
StatusType = Beeper | LED
################### Linux ####################
Linux-BootLoader = Superboot4412.bin
Linux-Kernel = Linux/zImage
Linux-CommandLine = root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2
Linux-RamDisk = Linux/ramdisk-u.img
Linux-RootFs-InstallImage = Linux/rootfs_qtopia_qt4.img
4.切換至nand啟動,開機自動燒寫
相關推薦
第一章——2440及4412燒寫程式碼
JZ2440 JZ2440有nor flash和nand flash,可以nor啟動和nand啟動,我習慣把nor中燒入u-boot,平時實驗用nand。可以用如下命令在nor中的u-boot對nand進行燒寫 tftp 30000000 u-boot.bin ; nan
C++ primer 第一章筆記及習題
本章的Github地址:https://github.com/hwl19951007/Cpp_Primer_Exercise/tree/master/Chapter1 筆記 << 運算子為輸出運算子。接受左右兩個物件,左邊必須是一個ostream物件,右邊
【小白看的Java教程】第十五章,更聰明的寫程式碼:方法
之前講解的迴圈操作,可以解決的是程式碼重複的問題,但是此時的重複的程式碼必須是有規律的。那迴圈操作,能解決所有的程式碼重複嗎?答案肯定是不行的,比如針對於某一種功能的重複操作,迴圈解決不了,終於方法就該登場了。舉個例子。 編寫一個飛機大戰遊戲,程式在執行過程中
【.NET Core專案實戰-統一認證平臺】第一章 功能及架構分析
從本文開始,我們正式進入專案研發階段,首先我們分析下統一認證平臺應該具備哪些功能性需求和非功能性需求,在梳理完這些需求後,設計好系統採用的架構來滿足已有的需求和未來的擴充套件應用。 1 功能性需求 統一認證平臺應該具備以下基本功能,本文只是拋磚引玉,我只列出後續課程會講到的相關內容的需求,不會詳細的設計功能
3、計算機網路第一章習題及答案
1、一條狗攜帶3盒8毫米的磁帶以18km/h的速度奔跑,每盒磁帶容量是7GB。試問在什麼距離範圍內狗的資料傳輸率會超過一條速率為150Mbps的傳輸線?在以下情況下:(1)狗的速度加倍(2)每盒磁帶容量增加(3)傳輸線路的速錄加倍,上述結果的變化。 解:150M
迅為4412燒寫
1)將需要燒寫的映象拷貝到“USB_fastboot_tool”-->“platform-tools”資料夾下面。 2)啟動開發板,進入Uboot 模式(Hit any key to stop autoboot讀秒的過程中如果輸入任何值,將進入uboot 模式)。 3)分割槽格式化,超級終端中fdisk
第一行程式碼第一章——你的第一行Android程式碼
第一行程式碼第一章—你的第一行Android程式碼 知識點目錄 1.1 瞭解全貌——Android王國簡介 1.1.1 Android系統架構 1.1.2 Android已釋出的版本 1.1.3 Android應用開發特色
ubuntu 4412燒寫ubuntu
Ubuntu 檔案系統有倆個,一個是支援LCD 的,也就是7 寸或者9.7寸螢幕;或者支援HDMI 顯示的。 LCD 顯示版本:iTOP4412_ubuntu_12.04_for_LCD_xxx.tar.gz 光碟目錄:“05_映象_Ubuntu 檔案系統”→“s
DSP TMS320FF28335程式從FLASH中拷貝到RAM中的兩種方法及FLASH燒寫方法
程式從FLASH中拷貝到RAM中執行的方法 DSP的程式下載執行方式有兩種:一種是下載到RAM中線上執行,一種是下載到FLASH中執行。在RAM中執行時,具有執行速度快,可以無限次下載的特點,但是RAM的特點是掉電丟失資料。FLASH具有掉電不丟失資料的特點,但是同時存在執
Future三重奏第一章:Future設計模式及程式碼示例
Future系列文章 Future模式的作用 去除等待主函式執行某項耗時操作的等待時間,在執行主函式耗時業務操作的時候,及時返回一個數據,繼續主函式剩下的業務,當需要獲取之前耗時操作的結果的時候在進行獲取 其本質則是在維持主業務順利進行的同時,非同步的執行主業
c++ primer(第五版)學習筆記及習題答案程式碼版(第一章)
筆記較為零散,都是自己不熟悉的知識點。 習題答案至於一個.cc中,需要執行某一題直接修改#define NUM**, 如執行第一題為#define NUM11,題1.24定義為NUM124chapter 1 1、std::cout << "Entertwo nu
Vivado下生成及燒寫MCS文件
water bits == xxx mat word arw onf art Jtag模式: 1、打開Open Hardware Manager 2、 Tools ->Auto Connect 3、TCL輸入: write_cfgmem -format MCS -si
Spring實戰——如何執行第一章的程式碼(如何生成一個可執行的jar包)
手動建立一個目錄kni,進入kni建立一個build.gradle檔案,內容如下: apply plugin: 'java' jar { baseName = 'knight' version = '0.0.1-SNAPSHOT' } repositories
《惡意程式碼分析實戰》--第一章:靜態分析基礎技術
**請參考大神的連結:https://blog.csdn.net/baidu_41108490/article/details/80298973#commentBox Lab1-1 這裡我只是記錄我的學習過程** 2、用PEtools開啟,檢視日期 .exe .dll
《用Python寫網路爬蟲》第一章踩坑
教程使用環境為pyhon2.x,使用python3.x進行學習時遇到一些坑,記錄下解決辦法。 由於python2.x中的urllib2模組在3.x中被整合到了urllib模組中,教程中涉及urllib2的部分的程式碼需調整 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; f
NDK第一章--認識NDK及簡單的輸出hello world
交叉編譯 在一個平臺下,編譯出另一個平臺能夠執行的二進位制程式碼 平臺:windows,mac,os,linux 處理器:x86,arm,mips 交叉編譯的原理 原始碼–>編譯–>連線–>可執行程式 模擬其他的平臺特
安卓學習(初)第一章(《第一行程式碼》)
一、建立第一個安卓專案步驟: 1、在Android studio介面點選star a new Android studio project。然後在接下來的介面填入該專案的名稱、公司域名以及專案程式碼的存放地址(如果沒特殊要求一般選擇預設)。 2、再下一個介面指定Minimum SDK和選擇開
AM3358裸片燒寫程式-第一部分
1.先說下背景,公司接到一個專案,使用者制定要用TI的AM3358晶片作為控制器,並且要執行linux系統,要具備百兆和千兆的網路通訊功能、序列通訊功能、IIC功能、SPI功能和GPMC功能,之所以要這麼多功能是因為要用AM3358與另外三個FPGA進行通訊,當然DDDR3和NAND FLASH是必不可少的,
A33_Vstar_Android_SDK開發 編譯及燒寫遇到的問題
A33_Vstar_Android_SDK開發 遇到的問題 整理一下Android SDK編譯及燒寫的時候,遇到的問題和解決的辦法 問題1 .tar.bz2檔案解壓命令 解決辦法:.tar.gz 格式解壓為&n
第一章 Linux——系統介紹及環境搭建
第一章 Linux——系統介紹及環境搭建 一、Linux簡介 二、環境搭建 一、Linux簡介 什麼是作業系統(what): 如果被問到什麼是作業系統,可能很多初學者都會一臉茫然。雖然我們都知道平時一直在用的Windows XP、Windows 7、Windows8其