娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

關于s3c6410的SD卡啟動

發布者:快樂之源最新更新時間:2024-09-13 來源: cnblogs關鍵字:s3c6410  SD卡啟動 手機看文章 掃描二維碼
隨時隨地手機看文章

      要研究裸機程序的編寫,必須要有一個“全裸”的環境。友善提供的superboot可以提供執行用戶自定義程序的能力,但其實這樣運行的程序環境還是依賴于superboot的, 那些內存初始化、時鐘初始化,串口初始化等工作都已經由superboot做了。tiny6410支持nandflash和sd卡啟動兩種模式,nandflash的燒寫還是依賴superboot,所以比較簡便的方法是通過sd卡啟動,superboot本身也是通過sd卡啟動的。

      從網上搜了一下這方面的資料,主要參考文章來來去去就幾篇, 三星的S3C6410_Internal_Rom_Booting.pdf是一份比較有用的資料,當然還有其中一些文章也比較有用,例如djyos的sd卡啟動試驗。這些文章描述s3c6410的要點總結如下:

      (1) s3c6410啟動過程分成BL0, BL1, BL2幾個階段, 其中BL0是固化在s3c6410內部的IROM中的, 該段程序根據所選擇的啟動模式從存儲介質加載BL1. s3c6410支持從多種存儲介質中啟動,nandflash, sd卡,sdhc卡,OneNand, MoviNand.... BL1和BL2存儲于這些存儲介質中。這里我主要關注sd和sdhc卡.

      (2) BL0在加載BL1前已經做了很多工作,sd控制器初始化,關閉看門狗等。

      (3) 對于sd卡, BL1位于 (totalSector - 18) 的扇區;對于sdhc卡,BL1位于(totalSector-1042)的扇區。BL1由BL0加載到 0x0C000000處運行,大小為8K.

       

知道了上面幾點,就可以制作sd啟動卡了,可以將所編寫的裸機程序放到BL1的位置。下面編寫一個最簡單的點燈程序(LED1~LED4全亮):

led.s:


 1 .text

 2 .code 32

 3 .global _start

 4 _start:

 5            ldr r0,=0x7f008800

 6            ldr r1,=0x11111111

 7            str r1,[r0]

 8            ldr r0,=0x7f008808

 9            ldr r2,=0xff0f

10            str r2,[r0]

11 loop:

12            b loop

13  


makefile:       


CC=arm-linux-gcc

LD=arm-linux-ld

OBJCOPY=arm-linux-objcopy

CFLAG=-c

LDFLAG=-e _start -Ttext 0x0c000000


led.bin: led 

      $(OBJCOPY) -O binary $< $@


led: led.o

      $(LD) $(LDFLAG) $? -o $@


led.o:led.s           

      $(CC) $(CFLAG) $< -o $@


clean:

      rm *.o

      rm led

      rm led.bin


      下面要將led.bin寫入BL1.使用的是2G的sd卡,所以應該寫到 -512 * 18處。網上的文章都說用WinHex寫入,我使用的是linux環境,沒有WinHex可用,不過其實dd命令就可以對絕對磁盤扇區做讀寫。還有一個問題就是要知道sd卡的大小, 用fdisk命令就可以了:

      $ sudo fdisk -l /dev/sdb

      Disk /dev/sdb: 2059 MB, 2059403264 bytes

      207 heads, 37 sectors/track, 525 cylinders

      Units = cylinders of 7659 * 512 = 3921408 bytes

      Sector size (logical/physical): 512 bytes / 512 bytes

      I/O size (minimum/optimal): 512 bytes / 512 bytes

      Disk identifier: 0xb2a60e0e


      Device Boot Start End Blocks Id System

      /dev/sdb1 1 525 2010469 b W95 FAT32


      所以要寫入的地址為 2059403264 - 18 * 512 = 2059394048


      然后用dd命令寫入led.bin :

      $ sudo dd if=./led.bin of=/dev/sdb seek=2059394048 bs=1

      至此一張可啟動的sd卡就完成了,插入tiny6410, 選擇sd卡啟動模式,就可以看到板子啟動時4燈全亮。

      注:友善宣稱它提供的SDFlasher.exe可以不論sd和sdhc卡都可以支持,從而優于三星提供的IROM_Flushing_Tool, 三星的要選擇是sd還是sdhc。其實原理很簡單,SDFlasher.exe寫入時不論是-18扇區還是-1042扇區都寫入。


關鍵字:s3c6410  SD卡啟動 引用地址:關于s3c6410的SD卡啟動

上一篇:[S3C6410-01]燒寫Linux3.0.1系統
下一篇:Tiny6410裸機編程-----WatchDog

推薦閱讀最新更新時間:2025-06-07 23:44

S3C6410移植u-boot
  1、下載uboot http://ftp.denx.de/pub/u-boot/   2、解壓文件 tar xvf u-boot-latest.tar.bz2   3、進入uboot根目錄、接著開始修改文件   4、創建板級文件目錄 cd /borad/samsung mkdir smdk6410   5、復制smdk6400文件到創建的文件目錄 cp smdk6400/* smdk6410/   6、修改目錄下的文件名 cd smdk6410 mv smdk6400.c smdk6410.c mv smdk6400_nand_spl.c smdk6410_nand_spl.c   7、修改板級文件內容
[單片機]
S3C6410開發(1)-初步入門
簡單的介紹 自當年買了6410的開發板起到昨天,我的思路就一直都被當初坑爹的教程所限制著,經過這兩天不斷地學習和查詢資料,我基本可以斷定不管是飛凌嵌入式還是友善之臂,提供的gcc編譯器絕對都是很多年之前的編譯器,有的甚至是自己修改過的,不但版本落后,而且也無法兼容其它的芯片,倒確實是編譯的指令參數少了點。看著是簡化了操作但實際卻為我這種刨根問底的學習者來說增加了不小的障礙。 編譯器 首先,經過比對飛凌官方和友善提供的編譯器,我發現貌似上一個通用的arm裸機編譯器應該是arm-none-linux-gnueabi-gcc這個,原本屬于codeSourcery的工具鏈,但現在被mentor收購了,我倒官網上翻了半天愣是沒找到它的G
[單片機]
s3c6410的RTC在linux中的驅動(5)
在上一篇中我們在中分析了RTC驅動的注冊和注銷,重點講了平臺設備驅動的probe函數,最后引出了這篇我們要講解的內容,那就是下面這個結構體中的一些函數。 static const struct rtc_class_ops s3c_rtcops = { .open= s3c_rtc_open, .release = s3c_rtc_release, .ioctl = s3c_rtc_ioctl, .read_time = s3c_rtc_gettime, .set_time = s3c_rtc_settime, .read_alarm = s3c_rtc_getalarm, .set_alarm = s3c_rtc_seta
[單片機]
<font color='red'>s3c6410</font>的RTC在linux中的驅動(5)
Linux下s3c6410的GPIO操作(2)
1、還接著看上一篇的這個函數 arch_initcall(s3c64xx_gpiolib_init); static __init int s3c64xx_gpiolib_init(void) { s3c64xx_gpiolib_add(gpio_4bit, ARRAY_SIZE(gpio_4bit), s3c64xx_gpiolib_add_4bit); s3c64xx_gpiolib_add(gpio_4bit2, ARRAY_SIZE(gpio_4bit2), s3c64xx_gpiolib_add_4bit2); s3c64xx_gpiolib_add(gpio_2bit, ARRAY_SI
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 淄博市| 施秉县| 灌阳县| 松滋市| 南通市| 璧山县| 新丰县| 博乐市| 荥经县| 扎赉特旗| 普安县| 河北省| 天长市| 微博| 句容市| 乐昌市| 衡东县| 若尔盖县| 白水县| 连南| 张家口市| 左权县| 沅陵县| 清原| 呼图壁县| 永寿县| 韶山市| 安义县| 庆元县| 扎赉特旗| 甘肃省| 荣昌县| 通化县| 微博| 宜阳县| 安达市| 称多县| 昭觉县| 馆陶县| 彭州市| 大洼县|