arm9+linux fl2440 第一次開機燒錄
一、燒錄相關軟體下載
USB轉串列埠相關晶片驅動 : CH341SER.ZIP
J-link驅動 : Setup_JLinkARM_V410i.exe
windows下tftp伺服器工具: tftpd32.exe
注意:
1, 只有在bootloader階段才能使用j-link下載除錯,一旦Linux執行起來後,j-link就不能再使用了。
2, 如果開發板上沒有出廠時的wince系統,就可以跳過前面的擦除出廠系統自帶bootloader的過程,直接使用j-link下載bootstrap程式並燒錄u-boot
3,所有的flash都只能由1 write成0,不能由0 write成1; 如果要從0變為1,只能erase; 所以在往flash寫資料之前,必須先擦除要寫的地址空間;
燒錄檔案說明:
--------------------
bootstrap-s3c2440.bin
bootstrap檔案是郭工用匯編寫的一段程式碼,主要用來初始化CPU外部的SDRAM;在燒錄時,該程式需要使用j-link下載到0x0(CPU內部SRAM)地址上去執行,另外此程式不需要燒錄到Nandflash上。
u-boot-s3c2440.bin
--------------------
u-boot就相當於電腦的BIOS程式,該程式用來燒錄/啟動Linux系統等。在執行完bootstrap後,我們需要使用j-link將它載入到0x33f80000(CPU外部SDRAM)中去執行,當他在記憶體中執行起來後,再使用nand write命令將他燒錄到nandflash的0地址上去;
--------------------
linuxrom是linux系統檔案,我們需要在u-boot執行時,使用tftp命令下載到SDRAM的0x30008000地址上,然後再使用nand write命令將其燒錄到nandflash的0x100000地址上,記得flash再寫之前一定要先使用nand erase命令擦除。
二、連線串列埠和用j-link燒寫程式
1,在安裝完USB轉串列埠驅動後,然後右擊我的電腦,開啟裝置管理器,在埠的地方可以看到USB轉串列埠的串列埠號(我的是COM8)
2,然後secureCRT如下設定,點選連線
然後就可以看到select Menu,接下來選擇6,再選擇0,然後y,這樣就幹掉了開發板的出場設定,接下來用jlink燒寫我們自己的程式。
3,如果成功安裝了jlink 工具的話,我們就能夠執行這個j-link commander,然後按如下步驟來燒寫
j-link載入u-boot命令:(j-link是可以直接操作CPU以及CPU內部的SRAM)
--------------------
h 停止CPU中正在執行的程式,如果沒有停下,可以多按幾次h
speed 12000 設定J-link除錯速度為12M
loadbin loadbin E:\bootfile\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程式
4,燒寫完之後,會出現下面的執行介面,
U-Boot 2010.09 (Jan 26 2016 - 10:34:01)
DRAM: 64 MiB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: dm9000
Hit any key to stop autoboot: 0
[[email protected]]#
[[email protected]]#
三、u-boot模式下將程式燒寫進nandflash
此時u-boot就在記憶體中執行起來了,然後要讓u-boot.bin 檔案燒到nandflash上,讓其能夠直接啟動, 在這之前的刪除之前nandflash上的資料,相當於格式化系統盤。
[[email protected]]# nand scrub
然後執行tftpd32.exe通過網路將檔案下載到u-boot上
[[email protected]]# set ipaddr 192.168.1.244
[[email protected]]# set serverip 192.168.1.93
I. 設定u-boot環境變數:
-----
set ethaddr 設定fl2440開發板上的u-boot程式中的MAC地址
set ipaddr 設定fl2440開發板上的u-boot程式中的IP地址
set serverip 指定tftp下載時使用的tftp伺服器的IP地址
save 儲存所設定的環境變數
reset u-boot環境下的重啟
注意:
不管怎麼樣,serverip和ipaddr 必須處在同一網段內.
1.如果是網線連線的是無線路由器的LAN口,則serverip是linux下搭建的tftp伺服器的ip
2.如果是用的本地連線,則serverip是本地連線手動設定的ipv4的ip(只要是私有ip),閘道器、dns可以不設定(處在同一區域網內)。本地連線時ipv4的ip(也就是serverip)設定必須是手動設定,不能dhcp,防止與pc的無線網路發生衝突。而且本地連線的網絡卡預設是關閉的,只有下載是才會使能。windows下的tftpd的server interface只有在下載是才會顯示serverip.
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 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系統檔案大小;
四、設定環境變數讓系統一上電後自動載入Linux核心
[[email protected]]# set bootargs 'console=ttyS0,115200 mem=64M rw loglevel=7'
[[email protected]]# set bootcmd 'nand read 30008000 100000 f00000;bootm 30008000'.
[[email protected]]# pri
baudrate=115200
ethaddr=08:00:3e:93:0a:5b
ipaddr=192.168.1.244
serverip=192.168.1.93
netmask=255.255.255.0
ethact=dm9000
bkr=tftp 30008000 linuxrom-s3c2440.bin;bootm 30008000
bootdelay=3
stdin=serial
stdout=serial
stderr=serial
bootargs=console=ttyS0,115200 mem=64M rw loglevel=7
bootcmd=nand read 30008000 100000 f00000;bootm 30008000
Environment size: 336/131068 bytes
附上:
ARM CPU: Samsung S3C2440(ARM920T, ARMv4t)
RAM:
SRAM (CPU片內的SRAM,只有4K) --NGCS0(0x0000 0000~+4K)
SDRAM (外擴的32M*2=64M SDRAM, Samsung K4S561632C-TC75) --NGCS6(0x3000 0000~+64M)
DDRAM (NC)
Flash:
Nandflash (Samsung 256MB*1 K9F2G08)
Norflash (NGCS0 --)
記憶體32MB/4個Bank = 一個bank 8MB
K4S561632C 總共有13行,9列
訪問時,先通過addr0~addr12給行地址,選定相應行;
再通過addr0~addr8 給列地址
SDRAM單片是16位的資料線(DQ0~DQ15)
+-+-+-+-+
+-+-+-+-+
+-+-+-+-+
+-+-+-+-+
13*9=2^22=4MB 一次是讀16個位(即2個位元組),總共定址8MB
L(Lower)DQM和U(Upper)DQM負責選擇低位元組還是高位元組給CPU
BA0~BA1這兩個線是用來控制究竟選中SDRAM裡的哪一個Bank
CPU是否選中SDRAM工作,是由SDRAM的NSCS這個引腳決定的,原理圖
上他接到了CPU的NGCS6上,所以SDRAM的地址線空間是從0x3000 0000開始
在開發板中,SDRAM連線到記憶體控制器的Bank6中,它的開始記憶體地址是0x30000000,大小為64M,即0x20000000。 ARM Linux kernel將SDRAM的開始地址定義為PHYS_OFFSET。經bootloader載入kernel並由自解壓部分程式碼執行後,最終kernel被放置到KERNEL_RAM_PADDR(=PHYS_OFFSET + TEXT_OFFSET,即0x30008000)地址上的一段記憶體,經此放置後,kernel程式碼以後均不會被移動。
在board/samsung/smdk2410/config.mk檔案中
TEXT_BASE = 0x33F80000
相關推薦
arm9+linux fl2440 第一次開機燒錄
一、燒錄相關軟體下載 USB轉串列埠相關晶片驅動 : CH341SER.ZIP J-link驅動 : Setup_JLinkARM_V410i.exe windows下t
第一次開機初始化指示燈
efi 一個 mage line 問題 復制 str image bytes 1.LK中讀寫oem分區中的特殊字符串 2.LK傳遞kernel cmdline參數firstboot, 3.kernel解析cmdline參數,通過判斷firstboot=來判斷是否是第一次開機
為什麽WIN7第一次開機冷啟動QQ未響應?WIN10就沒事?
是什麽 真煩 聊天 service 筆記 pac 官網 bsp ros 為什麽WIN7第一次開機冷啟動QQ未響應?WIN10就沒事? http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409516&extr
MTK功能機禁止第一次開機屏幕校準和啟動藍牙
esc light efault defined data script 方便 class ram 參考文件: Bluetooth.res <CACHEDATA type="byte" id="NVRAM_BT_POWER_STATUS" restore_flag=
Android 原始碼配置MTK log的第一次開機預設開啟
1. Android 原始碼配置MTK log的開啟 device\mediatek\common\mtklog mtklog-config-basic-eng.prop mtklog-config-
加入GMS包第一次開機預設WiFi開啟
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java --- a/alps/frameworks/base/services/core/java/com/an
Linux下第一次使用MySQL資料庫,關於密碼的設定
一、檢視資料庫是否執行 在終端下輸入:service mysqld status 檢視MySQL狀態,看看是否執行。 沒有執行的話就輸入:service mysqld start
arm9+linux fl2440之按鍵驅動 plat_button.c
if( result ) { result = -EBUSY; goto ERROR1; } } return 0; ERROR1: kfree((unsigned char *)pdev
arm9+linux fl2440 實現RT3070無線網絡卡AP模式並使開發板接入Wifi上網
----------------------------------------------------------------------------------------------------
arm9+linux fl2440 的編譯驅動時遇到的問題
出現的問題: make -C /lib/modules/`uname -r`/build M=`pwd` modules make: *** /lib/modules/2.6.32-573.el6.x86_64/build: No such file o
arm9+linux fl2440 GPS 資料採集和處理
======================================================================= 主機作業系統:centos 6.7
android修改系統第一次開機時間
在settings中有個系統時間,顯示是1970年1月1日 客戶要求改成2018年1月1日 修改了SystemServer的 private static final long EARLIEST_SUPPORTED_TIME = 1514736000000l;//86
樹莓派第一次開機的使用
1、使用Win32DiskImager燒寫完系統到sd卡後,開啟sd卡,新建一個名為ssh空白檔案2、使用putty連線樹莓派 login as: pi password : raspberry3、更新系統軟體sudo apt-get installsud
針對於谷歌開源串列埠專案(SerialDemo)第一次開機不能收到資料解決方法
最近一段時間一直在調串列埠,公司的要求是在後臺能一直監聽資料的變化,毫無疑問,首先想到的就是監聽開機廣播去啟動一個service,在service裡面去做串列埠的初始化工作以及接收處理資料,這樣做完了以後就發現一個比較嚴重的問題,在每次開機的時
Linux:第一次練習題
顯示 第一次 當前 日期 href com target 今天 lan 1、顯示當前時間,格式:2016-06-18 10:20:30 ? date +“%F %T” 2、顯示前天是星期幾 ? date +%A 或者 date +%w 3、設置當前日期
java web項目部署在linux系統出現第一次登錄高延遲的問題
inux 重要 系統 隨機 需要 .so lib 出現 初始化 今天記錄一下之前遇到的問題:項目部署在window登錄能很快完成,部署到linux後,第一次登錄過程變得很慢。通過查看系統日誌,發現時間主要消耗在了創建session,並且定位到是SecureRandom的初始
做一個“有思想的插排”--第一次燒錄程式
前一段時間有點事i,所以沒有更新文章,今天再更新兩篇,把下載部分更新完成。 第一次下載程式 燒錄軟體 上一篇介紹了韌體檔案的編譯生成,現在大家資料夾裡就會有一個編譯完成的檔案,共本次下載。 開啟ESPFlashDownloadTool_v3.6.4軟體,選擇ESP8266下載
初學Jmeter的摘抄學習總結----------第一次試水badboy錄制並用jmeter打開
結束 希望 log png 我只 直接 初學 查看 adb 哈哈哈哈哈,跟著我的初學者福音學習遇到了問題,蠢笨如我,badboy錄了個亂七八糟的腳本然後用jmeter打開跟博主的頁面怎麽也對不上,尷尬,然後重新百度了一下badboy怎麽錄制腳本,因為只想簡單掌握,所以bad
一周第一次課(10月16日)安裝linux
一周第一次課(10月16日)安裝linux學習之初:學習課程的目的什麽 (提升自己拿高薪)學習完課程做什麽職位(系統運維)學習完課程在哪個城市發展(鄭州)1給自己設定目標:何時學完:(10月16日到2月16日)何時跳槽第一份薪酬多少一年後多少薪酬 兩年後多少薪酬2,學習方法要預習和復習課程做到當日事當日畢養
Linux命令行燒錄樹莓派鏡像至SD卡
mount 問題 而不是 使用 index fun pkill contain 一切都 首先下載鏡像壓縮包 驗證壓縮包的未被串改 1 sha1sum 2013-09-25-wheezy-raspbian.zip 對此命令的輸出結果和官網給出的