開發板型號:FL2440
燒錄工具: J-Link
串口工具:340
調試終端:secureCRT
下載工具:tftpd32
燒錄前:
串口連接開發板,在secureCRT上快速鏈接:
1)協議:Serial ;
2)在設備管理器選擇端口進行選擇
3)波特率:115200,數據位:8 ,奇偶校驗: none ,停止位:0
4) 不選擇流控
燒錄要使用的文件:
燒錄文件說明:
--------------------
bootstrap-s3c2440.bin
bootstrap文件是郭工用匯編寫的一段代碼,主要用來初始化CPU外部的SDRAM;在燒錄時,該
程序需要使用j-link下載到0x0(CPU內部SRRAM)地址上去運行,另外此程序不需要燒錄到Nandflash上。
u-boot-s3c2440.bin
--------------------
u-boot就相當於電腦的BIOS程序,該程序用來燒錄/啟動Linux系統等。在運行完bootstrap后,
我們需要使用j-link將它加載到0x33f80000(CPU外部SDRAM)中去運行,當他在內存中運行起來后,
再使用nand write命令將他燒錄到nandflash的0地址上去;
linuxrom-s3c2440.bin
--------------------
linuxrom是linux系統文件,我們需要在u-boot運行時,使用tftp命令下載到SDRAM的0x30008000
地址上,然后再使用nand write命令將其燒錄到nandflash的0x100000地址上,記得flash再寫之前
一定要先使用nand erase命令擦除。
s3c2440_apps.apm
--------------------
該程序為FL2440上的應用程序,包括系統配置,WiFi使用,3G/GPRS撥號,數據庫,web server,
MP3/MP4播放器程序等;修改網卡IP地址和MAC地址在:
/apps/etc/network/ifcfg-eth0
J-link commander的連接,在開發板上插上J-link ,如果沒有J-link驅動請先安裝,在開始菜單-程序-SEGGER-J-link commander 雙擊打開
連接正確后接着進行J-link命令操作:
J-link 加載u-boot命令
h 停止CPU中正在執行的程序,如果沒有停下,可以多按幾次h
speed 12000 設置J-link調試速度為12M
loadbin E:\Baiduyun\bootstrap-s3c2440.bin 0 加載bootstrap程序到CPU內部的4K SRAM中運行
setpc 0 讓PC寄出去指向SRAM的起始地址,該地址放的是剛才下載的bootstrap程序
g 開始執行bootstrap程序,該程序用來初始化外部擴展的64M SDRAM,地址空間為0x3000 0000~(0x3000 0000+64M)
h 停止bootstrap程序的執行,如果沒有停下,可以多按幾次h
loadbin E:\Baiduyun\u-boot-s3c2440.bin 0x33f80000 將u-boot加載到SDRAM的0x33f80000
setpc 0x33f80000 使PC寄存器指向0x33f80000,即u-boot程序的第一條代碼
g 開始執行u-boot程序
這樣u-boot就下載到開發板的內存上並可以運行了。這里需要注意的是,在運行完最后一個命令“g“后,應迅速切換到終端,這時開發板會自動啟動uboot,你需要在secureCRT環境進入u-boot
燒錄:
u-boot下載燒錄命令:
設置u-boot環境變量:
pri 顯示當前環境變量
set ipaddr 設置fl2440開發板上的u-boot程序中的IP地址set serverip 指定tftp下載時使用的tftp服務器的IP地址
II. 下載並燒錄u-boot程序:
tftp 30008000 u-boot-s3c2440.bin 將u-boot臨時下載到SDRAM的30008000地址
nand erase 0 100000 將nandflash的0~1M的分區擦除,該分區是用來存放u-boot程序的;
nand write 30008000 0 ${filesize} 將剛下載到SDRAM 30008000地址上的u-boot寫到nandflash的0地址偏移處,大小為下載的U-boot文件大小;
III. 下載並燒錄linux系統:
tftp 30008000 linuxrom-s3c2440.bin 將linux系統程序臨時下載到SDRAM的30008000地址
nand erase 100000 F00000 將nandflash的1M~16M的分區(總共15M)擦除,該分區是用來存放linux系統的;
nand write 30008000 100000 ${filesize} 將剛下載到SDRAM 30008000地址上的linux系統寫到nandflash的1M地址偏移處,大小為下載的linux系統文件大小;
拔掉J-Link 重啟開發板
boot 重啟
在燒錄過程中遇到的問題:
1)NAND write to offset 100000 failed -5 //寫入偏移失敗
3635200 bytes written: ERROR
解決方法:pri 顯示當前變量 ,最后一行查看Environment size: 2003/131068 bytes,這時候寫入字節應該較大於131068,寫入140000較為合適
nand write 30008000 100000 140000
2) boot
NAND read: device 0 offset 0x100000, size 0xf00000
NAND read from offset 100000 failed -74
15728640 bytes read: ERROR
## Booting kernel from Legacy Image at 30008000 ...
Image Name: Linux Kernel
Created: 2014-09-06 2:31:55 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 7569956 Bytes = 7.2 MiB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!
解決:內核實際大小超過了bootcmd所指定大小,u-boot只會去讀指定大小到內存中運行,就會校驗失敗了,把bootcmd改大一點
主機操作系統:Centos 6.7
交叉編譯器環境:arm-linux-gcc-4.5.4
開發板平台: FL2440
Linux內核版本: linux-3.0
燒錄工具:J-LINK
下載工具:TFTP32
調試終端:SECURE-CRT
郵箱:leiyuxing205@gmail.com
———————————————————————————————————————
燒錄前:
1.先下載SETUP,安裝完后串口連接開發板,打開設備管理器查看端口號
2.在secureCRT上快速鏈接,打開connect進行如下相關設置:
協議:Serial
波特率:115200
數據位:8
奇偶校驗: none
停止位:0
不選擇流控
注意事項:
1, 只有在bootloader階段才能使用j-link下載調試,一旦Linux運行起來后,j-link就不能再使用了。
2, 如果開發板上沒有出廠時的wince系統,就可以跳過前面的擦除出廠系統自帶bootloader的過程,直接使用j-link下載bootstrap程序並燒錄u-boot :如果開發之前帶有wince系統,則在燒錄前得先擦除整個flash,具體操作如下:先不插j-link,運行開發板,進入uboot界面,選擇"Erase Flash Partition",擦除bootloader。若不是第一次,可先從終端進入uboot模式,使用 nand scrub格式化。
3.所有的flash都只能由1 write成0,不能由0 write成1; 如果要從0變為1,只能erase; 所以在往flash寫數據之前,必須先擦除要寫的地址空間;
燒錄相關軟件:
USB轉串口相關芯片驅動 : 凌雲嵌入式共享\Part09. 培訓常用軟件和工具\USB轉串口驅動
J-link驅動 : 凌雲嵌入式共享\Part09. 培訓常用軟件和工具\jlink驅動
windows下tftp服務器工具: 凌雲嵌入式共享\Part09. 培訓常用軟件和工具
燒錄到開發板上的bin文件下載地址:
http://emb-lingyun.xicp.net:8888/fl2440/trunk/bin/
燒錄文件說明:
--------------------
bootstrap-s3c2440.bin
bootstrap文件是郭工用匯編寫的一段代碼,主要用來初始化CPU外部的SDRAM;在燒錄時,該
程序需要使用j-link下載到0x0(CPU內部SRRAM)地址上去運行,另外此程序不需要燒錄到Nandflash上。
u-boot-s3c2440.bin
--------------------
u-boot就相當於電腦的BIOS程序,該程序用來燒錄/啟動Linux系統等。在運行完bootstrap后,
我們需要使用j-link將它加載到0x33f80000(CPU外部SDRAM)中去運行,當他在內存中運行起來后,
再使用nand write命令將他燒錄到nandflash的0地址上去;
linuxrom-s3c2440.bin
--------------------
linuxrom是linux系統文件,我們需要在u-boot運行時,使用tftp命令下載到SDRAM的0x30008000
地址上,然后再使用nand write命令將其燒錄到nandflash的0x100000地址上,記得flash再寫之前
一定要先使用nand erase命令擦除。
s3c2440_apps.apm
--------------------
該程序為FL2440上的應用程序,包括系統配置,WiFi使用,3G/GPRS撥號,數據庫,web server,
MP3/MP4播放器程序等;修改網卡IP地址和MAC地址在:
/apps/etc/network/ifcfg-eth0
j-link加載u-boot命令:
--------------------
h 停止CPU中正在執行的程序,如果沒有停下,可以多按幾次h
speed 12000 設置J-link調試速度為12M
loadbin E:\fl2440_bin\bootstrap-s3c2440.bin 0 加載bootstrap程序到CPU內部的4K SRAM中運行
setpc 0 讓PC寄出去指向SRAM的起始地址,該地址放的是剛才下載的bootstrap程序
g 開始執行bootstrap程序,該程序用來初始化外部擴展的64M SDRAM,地址空間為0x3000 0000~(0x3000 0000+64M)
h 停止bootstrap程序的執行,如果沒有停下,可以多按幾次h
loadbin E:\fl2440_bin\u-boot-s3c2440.bin 0x33f80000 將u-boot加載到SDRAM的0x33f80000
setpc 0x33f80000 使PC寄存器指向0x33f80000,即u-boot程序的第一條代碼
g 開始執行u-boot程序
u-boot下載燒錄命令:
--------------------
I. 設置u-boot環境變量:
-----
set ethaddr 設置fl2440開發板上的u-boot程序中的MAC地址
set ipaddr 設置fl2440開發板上的u-boot程序中的IP地址
set serverip 指定tftp下載時使用的tftp服務器的IP地址
II. 下載並燒錄u-boot程序:
-----
tftp 300008000 u-boot-s3c2440.bin 將u-boot臨時下載到SDRAM的30008000地址
nand erase 0 100000 將nandflash的0~1M的分區擦除,該分區是用來存放u-boot程序的;
nand write 30008000 0 ${filesize} 將剛下載到SDRAM 30008000地址上的u-boot寫到nandflash的0地址偏移處,大小為下載的U-boot文件大小;
III. 下載並燒錄linux系統:
-----
tftp 300008000 linuxrom-s3c2440.bin 將linux系統程序臨時下載到SDRAM的30008000地址
nand erase 100000 F00000 將nandflash的1M~16M的分區(總共15M)擦除,該分區是用來存放linux系統的;
nand write 30008000 100000 ${filesize} 將剛下載到SDRAM 30008000地址上的linux系統寫到nandflash的1M地址偏移處,大小為下載的linux系統文件大小;
燒錄過程中遇到的問題及解決方案:
問題1:
往flash中第一次寫數據時,先把芯片中的數據全部擦除后,再寫數據,讀出來發現寫的全部正確。而忘這個flash中第二次寫數據時,沒有擦除,而是接着上次的地址往后寫,發現寫入的數據的前12個字節是錯誤的,其余的數據都正確,不知道為什么?
原因:
寫入,只能把數據(bit)從1改為0;擦除,只能把所有數據(bit)從0改為1。 所以,要想寫入數據,而不擦除,是有條件的:保證寫入數據的每一個bit,不會從 0 變成 1 。
解決方法:
nand flash 每一次燒錄之前,必須得先擦除,再寫,使用nand erase命令。
問題2:
接下來插入網線,設置好ip地址與電腦同一網段。使用tftp工具,想將uboot下載到開發板內存的相應地址上,再通過nand write燒錄到nand flash上發現一直被中斷無法聯網下載。
原因:
防火牆的作用是攔截、限制應用程序的網絡連接請求,會詢問你是否允許應用程序訪問網絡,但是這會給我們使用網絡功能帶來很多不便。
解決方法:
關閉殺毒軟件:直接在任務欄上找到殺毒軟件圖標-右鍵-退出;
關閉防火牆:任務欄“開始”按鈕-控制面板-系統和安全-windows防火牆-打開或關閉windows防火牆-選擇“關閉”。
問題3:
NAND write to offset 100000 failed -5 //寫入偏移失敗
3635200 bytes written: ERROR
原因:
設置的偏移量比當前的偏移量要小,無法寫入。
解決方法:
pri 顯示當前變量 ,最后一行查看Environment size: 2003/131068 bytes,這時候寫入字節應該較大於131068,寫入140000較為合適
nand write 30008000 100000 140000
