開發板燒錄教程


 

開發板型號: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM