Ⅰ 紅旗linux 6.0SP1可不可以裝PCB軟體
可以的。
免費開源的有:gEDA;KICAD.
商業軟體:小型 Eagle(我現在用的是Eagle 5.10.0,當然是要和諧的,如果有錢就買正版吧);
大型 Candence(世界第一,價格也第一);
當然在PCB製造上都沒有問題的,都支持導出Gerber文件,工廠就憑Gerber文件給你製造了。
Ⅱ 在Red Hat linux7上怎樣用vi編譯器打代碼,還有怎樣用GDB調試,有大神可以指導一下嗎,謝謝!
課程安排課程簡介第一周嵌入式C語言編程基礎主要介紹在嵌入式開發編程中C語言的重要概念和編程技巧中的重點難點,以復習串講和實例分析的形式,重點介紹包括函數與程序結構,指針、數組和鏈表,庫函數的使用等知識。第二周Linux操作和編程基礎主要介紹Linux的基本命令和基礎編程知識,包括Linux的文件操作和目錄操作命令,VI編輯器,GCC編譯器,GDB調試器和Make項目管理工具等知識。第三周Linux上C強化編程訓練主要包括整數演算法訓練,遞歸和棧編程訓練,位操作訓練,指針訓練,字元串訓練和常用C庫函數編程介面實踐,強化學員對Linux下基本編程開發的理解和編碼調試的能力。第四-七周Linux環境高級編程及項目開發編程實踐主要包括系統編程(信號/系統調用/管道/FIFO/消息隊列/共享內存等),文件I/O編程(文件描述符/文件讀寫介面/原子操作/阻塞與非阻塞IO等),多任務和多線程編程(進程標識/用戶標識/fork與vfork/多線程概念/線程同步等),網路編程(網路基本概念/套介面編程/網路位元組次序/Client/Server結構/UDP編程);掌握Linux下Socket編程的開發流程,熟悉網路編程的調用介面函數和相關數據結構,使學員初步具備在Linux上進行系統編程開發的能力。同時綜合之前所學內容和編程技術,以小組為單位進行一個團隊合作項目的開發,考核內容包括文件I/O編程,多線程編程,網路編程和項目文檔編寫。期中考試第八-九周嵌入式處理器體系結構及編程實踐主要介紹ARM、MIPS、PowerPC等體系結構及其基本編程知識,包括指令分類,定址方式、指令集、存儲系統、異常中斷處理、匯編語言以及C\C++和匯編語言的混合編程等知識。同時結合ARM嵌入式開發板硬體設計原理和基本硬體設計流程,分析各種外設的工作原理和驅動機制,並自己動手實踐完成一個ARM開發板上的編程大作業。第十-十一周嵌入式Linux開發基礎及高級應用主要介紹嵌入式Linux開發應用程序的基本流程和知識,包括嵌入式Linux基本概念和開發流程、Bootloader工作原理、內核裁減配置和交叉編譯、根文件系統製作、網路編程及圖形界面和資料庫開發等知識。同時獨立完成一個基於嵌入式LinuxGUI的應用編程大作業。第十二-十三周嵌入式Linux驅動理論及驅動程序開發實踐主要介紹嵌入式Linux上驅動程序開發規范,包括設備驅動程序概念、字元設備驅動程序、塊設備與網路設備、網卡驅動以及常用嵌入式設備驅動開發等知識。同時獨立實現兩種嵌入式設備驅動程序的編寫,包括驅動模塊的調試和載入以及完整的項目開發文檔的編寫。第十四-十五周嵌入式Linux項目團隊開發實踐鍛煉主要包括設計並實現一個真實和完整的嵌入式項目的開發流程,涉及到數據採集、網路通訊、圖形用戶界面顯示以及嵌入式資料庫存儲系統等多種嵌入式Linux編程技術。要求學員建立起團隊開發和協同工作的企業項目開發模式的概念和流程,強化學員對編寫項目概要設計文檔和詳細設計文檔的理解,為就業前的職業技能和素質訓練做好充分准備。畢業典禮培訓目標學習內容掌握程度掌握三種編程語言C語言精通C++語言了解ARM匯編語言熟悉掌握兩種嵌入式Linux操作系統Linux精通uCLinux精通掌握兩種嵌入式實時操作系統VxWorks熟悉uC/OS-II熟悉掌握三種處理器體系結構ARM體系結構精通MIPS體系結構熟悉PowerPC了解掌握五種ARM核處理器SamsungS3C2410/S3C44B0精通IntelXScalePXA255精通PhilipsLPC22xx精通EP7312熟悉MIPSGodson龍芯熟悉掌握兩種硬體設計工具CandencePCB熟悉Protel了解掌握兩種Linux下編輯軟體VI精通EMACS了解掌握兩種串口通訊工具超級終端(Windows)熟悉MiniCOM(Linux)熟悉掌握三種Flash燒寫工具FlashProgrammer(GUI)熟悉JFlash燒寫軟體及原理精通SJF系列燒寫軟體及原理精通掌握兩種調試工具JTAG在線調試器熟悉SkyEye模擬調試工具熟悉掌握兩種集成開發環境ARMADS1.2精通K-DevelopIDE熟悉掌握一種源代碼版本管理工具CVS熟悉掌握嵌入式Linux整體開發流程熟悉GNU交叉編譯器使用Cross-compiler-gcc/g++精通LinuxMakefile組織結構精通Bootloader啟動代碼u-Boot精通RedBoot熟悉內核編譯配置參數設置精通內核調試熟悉文件系統JFFS2文件系統精通NFS文件系統精通ROMFS文件系統精通EXT2文件系統熟悉YAFF文件系統了解設備驅動程序液晶LCD設備驅動精通USB設備驅動精通網卡設備驅動精通嵌入式圖形系統MiniGUI精通QT/Embedded熟悉MicroWIN了解嵌入式資料庫系統SQLLite精通嵌入式應用程序開發網路通訊應用開發精通資料庫存儲應用開發熟悉多媒體應用開發熟悉圖形用戶界面開發精通Shell編程技巧熟悉【說明】精通――表明對於所學內容和工具的原理進行過深入分析,了解相關內容實現的具體技術細節,並掌握了相關工具的高級使用技巧。熟悉――表明對於所學內容和工具能夠融會貫通,掌握相關內容的基本概念,並能夠熟練使用相關工具的常用技巧。了解――表明對於所學內容和工具一般了解,能夠區別相關內容在概念上的異同,並能夠初步使用相關工具。
Ⅲ bootstrap和source的區別
bootloader和bootstrap的區別
在 《embedded linux primer 》上看到的,其實還有一些分歧和不精確的地方,
比如bootstrap 和bootstrap loader似乎在PC上還有區別,不過還是不影響理解了
http://www.devbone.com/leadbbs/MINI/Default.asp?100-2246-0-0-0-0-0-a-.htm
又如RedBoot(RedHat Embedded Debug and Bootstrap),本質是一個bootloader但名字又有bootstrap,讓人郁悶
http://sourceware.org/redboot/
這里僅限於嵌入式+ARM+Linux環境
bootloader 翻譯為 (第一階段)引導裝入程序
bootstrap loader 翻譯為 第二階段引導裝入程序
bootloader不用多解釋都能理解--上電後執行的第一個程序,它絕對不會依賴內核。比如uboot、vivi
bootstrap,第二階段引導裝入程序,屬於內核代碼(沒有被編譯進vmlinux,但是可執行的鏡像如zImage中含有bootstrap ),充當bootloader和內核鏡像之間的紐帶。
bootstrap通常會校驗內核鏡像、解壓縮內核鏡像、重新部署內核鏡像到內存、為內核執行提供合適的上下文(無非是關中斷、開指令cache和數據cache、設置c語言運行環境)
執行流程
上電-->bootloader -->bootstrap(head.o)-->內核vmlinux(head.o)-->內核start_kernel(main.o)
以上兩個head.o並不相同
bootstrap用的是/arch/arm/boot/compressed/head.S
內核vmlinux用的是/arch/arm/kernel/head.S
雖然都是head.o,但是不在一個時代了,自此區分開了bootstrap和內核vmlinux
等於你看到Uncompressing Linux... done, booting the kernel. 還屬於bootstrap
等到列印出第二行內核版本信息的時候,就已經是真正的內核main.o的時代了
一個嚴格意義上的內核,make的一個最重要的生成文件 vmlinux
去掉了符號、標記和注釋後生成了image
gzip壓縮後變成piggy.gz
接下來,一個名為piggy.s的文件被匯編成piggy.o
非常有意思的是它僅有7行代碼,其實就只有把piggy.gz 包含進來的作用
.section .piggydata,#alloc
.globl input_data
input_data:
.incbin "arch/arm/boot/compressed/piggy.gz"
.globl input_data_end
input_data_end:
接著piggy.o同misc.o、head.o等屬於bootstrap的代碼一起鏈接成為zImage等可以被引導的合成鏡像。
其中misc.o負責解壓縮、head.o head_xx.o 負責進行內核上下文的初始化
Ⅳ 如何移植redboot支持nand flash
Redboot被設計用於嵌入式調試和啟動環境,它是一個基於eCos的應用程序,使用eCos的硬體抽象層(HAL)作為它的基礎。它一個基本的功能是作為bootloader,但可用於任何嵌入式系統或任何嵌入式實時操作系統中。也可用於產品開發周期中的調試支持或在發布的產品中提供flash或網路啟動。特性有:
啟動腳本支持;
管理和控制的命令行支持;
通過串口或乙太網口的訪問;
GDB支持;
flash映像系統支持;
X/Y數據機的支持;
支持使用BOOTP或靜態IP地址配置的網路啟動;
移植redboot到stm32開發板
1.,搭建好ecos開發環境
2,打開ecos圖形配置工具configtool,如下圖所示。
下圖中,左邊窗口為ecos的配置項窗口,右邊窗口從上到下分別為:沖突提示窗口、配置項屬性窗口、配置項說明窗口。
Ⅳ 如何製作和使用Jffs2文件系統
嵌入應用:如何製作和使用Jffs2文件系統 (zhuan)本文主要介紹如何在AT91SAM9261EK板子上製作和使用jffs2文件系統,使用的是linux-2.6.21內核。
首先配置MTD
$ make menuconfig
進入 Memory Technology Devices (MTD) --->
<*> Memory Technology Device (MTD) support
[*] Debugging
[*] MTD partitioning support
[*] Command line partition table parsing
[*] Direct char device access to MTD devices
[*] Caching block device access to MTD devices
RAM/ROM/Flash chip drivers ----->
<*> Detect non-CFI AMD/JEDEC-compatible flash chips
<*> Support for AMD/Fujitsu flash chips
Mapping drivers for chip access --->
[*] Support non-linear mappings of flash chips
Self-contained MTD device drivers --->
[*] Support for AT45... DataFlash
NAND Flash Device Drivers ---->
[*] NAND Device Support
[*] Support for NAND Flash /SmartMedia on AT91
File systems ---->
<*> Second extended fs support
[*] Inotify file change notification support
[*] Inotify support for user space
<*> Filesystem in Userspace support
Miscellaneous filesystems
<*> Journalling Flash File System v2 (JFFS2) support
[*] JFFS2 write-buffering support
<*> Compressed ROM file system support (cramfs)
以上配置中沒有列出的,都沒選;其配置僅做參考,可根據自己的需要自行配置。
$ make all
其次製作mtd-util工具
從網上下載zlib-1.2.3.tar.gz解壓縮$ cd zlib-1.2.3
$ ./configure –prefix=/usr/local/arm/3.4.1/arm-linux --shared
修改Makefile如下:
CC=arm-linux-gcc
LDSHARED=arm-linux-ld -shared
$ make all
$ make install
注意:這里是安裝在/usr/local/arm/3.4.1/arm-linux目錄下
由於交叉編譯mtd工具時需要zlib.h文件,所以在編譯之前先安裝zlib庫文件。
從網上下載mtd-snapshot-20050519.tar.bz2 解壓縮 $ cd mtd/util
修改該目錄下的Makefile:
CROSS=arm-linux-
$ make all
然後將該目錄下生成的 flash_erase,flash_eraseall, mkfs.jffs2工具放在ramdisk 文件系統中(我這里放在/bin目錄下),另外在ramdisk文件系統的dev目錄下要保證有mtd0~mtd9,mtdblock0~mtdblock9這些設備,如果沒有可參考 ramdisk文件系統的製作,也可從pc機相同目錄下拷貝,要加上文件屬性。
另外,需要將/arm-linux/lib目錄下的libz.so, libz.so.1, libz.so.1.2.3文件拷貝到ramdisk文件系統的/lib目錄下,否則mkfs.jffs2工具不能使用。
最後將新生成的uImage和ramdisk文件下載到板子上,起動系統,使用命令 cat /proc/mtd可以看到
dev: size erasesize name
mtd0: 00040000 00020000 "Partition 1"
mtd1: 0ffc0000 00020000 "Partition 2"
mtd2: 00420000 00000210 "spi0.0-AT45DB321x"
這里mtd0,mtd1是nandflash上的分區; mtd2是dataflsh上的分區,該分區上放有u-boot,uImage.img,ramdisk.img,所以我們這里可以使用空的nandflash上的兩個分區。使用之前要先用工具flash_erase或者flash_eraseall擦除nandflash,具體使用的步驟如下:
# flash_erase /dev/mtd1
製作jffs2映像
# cd /var/tmp
# mkdir jffs2 (jffs2下的目錄可以任意建)
# mkfs.jffs2 –d jffs2/ -o jffs2.img
# cp /var/tmp/jffs2/jffs2.img /dev/mtdblock1
最後# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可,使用結束可使用$ umount /mnt/mtd卸載.
如果只是當作普通的jffs2 來使用dataflash或者nandflash,可不必製作 jffs2映像,只需要最後一步,# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可。
AT91sam9263EK使用JFFS2根文件系統
在AT91sam9263EK成功配置了NFS根文件系統後,後來又想把JFFS2也移植到AT91sam9263EK上吧,說干就干。
1. 呵呵,其實很簡單我使用的linux-2.6.20內核里已經有jffs2 文件系統支持,選上jffs2即可
File systems --->
Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support
(0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
[*] JFFS2 write-buffering support
[*] JFFS2 summary support (EXPERIMENTAL)
[*] JFFS2 XATTR support (EXPERIMENTAL)
[*] JFFS2 POSIX Access Control Lists
[*] JFFS2 Security Labels
[*] Advanced compression options for JFFS2
[*] JFFS2 ZLIB compression support
[*] JFFS2 RTIME compression support
[ ] JFFS2 RUBIN compression support
JFFS2 default compression mode (priority)
選上MTD支持
Device Drivers --->
Memory Technology Devices (MTD) --->
<*> Memory Technology Device (MTD) support
[ ] Debugging
<*> MTD concatenating support
[*] MTD partitioning support
< > RedBoot partition table parsing
[*] Command line partition table parsing
<*> ARM Firmware Suite partition parsing
--- User Moles And Translation Layers
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
<*> FTL (Flash Translation Layer) support
<*> NFTL (NAND Flash Translation Layer) support
[ ] Write support for NFTL
2. 從ttp://www.linux-mtd.infradead.org/上下載
mtd-utils-1.0.0.tar.gz 到宿主機。
解壓
tar xvzf mtd-utils-1.0.0.tar.gz
進入mtd-utils-1.0.0目錄修改Makefile進行編譯。
編譯出mkfs.jffs2,nandwrite等工具
3. 創建jffs2根文件系統:
首先要有一個其他類型的根文件系統,製作和獲取方式可以參見<< AT91sam9263EK使用NFS根文件系統>>
比如可以:
mount -t cramfs rootfs_lnxdemo.cramfs tmp/ -o loop
rootfs_lnxdemo.cramfs由atmel提供當然你可以自己製作,這里直接使用atmel的省去了製作的麻煩。
tar czvf target.tar.gz tmp/
生成jffs2根文件系統鏡像:
mkfs.jffs2 –l –s 0x400 –e 0x20000 –d tmp/ -o target.jffs2
4. 燒寫jffs2根文件系統鏡像到nand flash。
燒寫方法應該有多種常用的有2種(呵呵自己認為的):
a.通過nand編程器燒寫鏡像文件到nand flash晶元然後再焊接到pcb.
b.掛載nfs文件系統,使用nandwrite工具寫鏡像文件
到mtd設備。
第一種適合生產時使用,而我們測試時候比較適合使用第二種方式。
掛載nfs文件系統:
nandwrite –o /dev/mtd1 target.jffs2
或者是在nfs 根文件系統下:
mount –t jffs2 /dev/mtdblock1 /mnt
cd /mnt
tar xvzf ../target.tar.gz
umount /mnt
5. 配置內核啟動參數如下:
setenv bootargs mem=64M console=ttyS0 115200 root=/dev/mtdblock1 rootfstype=jffs2 rw
6. 重新啟動,呵呵內核使用jffs2文件系統自動掛載根文件系統到mtdblock1設備上。
ls 測試一下
vi test
hello this is for test jffs2 filesystem.
保存退出。
Sync
重新啟動
vi test
內容依舊。
Ok jffs2根文件系統引導成功。
Linux聯盟收集整理 ,轉貼請標明原始鏈接
Ⅵ 嵌入式系統啟動代碼移植分析
搭建開發環境很簡單:我用Linux,先在windows下裝一個虛擬機VMware,然後安裝Red Hat Linux9.0(到網上去下載安裝鏡像文件)。然後裝上交叉編譯器,裝上嵌入式Linux源碼。
啟動代碼很多的別說兩個5五個都可以:U-BOOT vivi Blob ARMboot Redboot(推薦用前兩種,比較常用)
啟動代碼的組成與功能嘛,直接網上搜索,多的是。
移植內核和文件系統(Linux),非常簡單,把Linux平台搭建好了,直接編譯就行。
Ⅶ bootloader和bootstrap的區別
bootloader
和
bootstrap
的區別
在
《embedded
linux
primer
》上看到的,其實還有一些分歧和不精確的地方,
比如bootstrap
和bootstrap
loader似乎在PC上還有區別,不過還是不影響理解了
http://www.devbone.com/leadbbs/MINI/Default.asp?100-2246-0-0-0-0-0-a-.htm
又如RedBoot(RedHat
Embedded
Debug
and
Bootstrap),本質是一個bootloader但名字又有bootstrap,讓人郁悶
http://sourceware.org/redboot/
這里僅限於嵌入式+ARM+Linux環境
bootloader
翻譯為
(第一階段)引導裝入程序
bootstrap
loader
翻譯為
第二階段引導裝入程序
bootloader不用多解釋都能理解--上電後執行的第一個程序,它絕對不會依賴內核。比如uboot、vivi
bootstrap,第二階段引導裝入程序,屬於內核代碼(沒有被編譯進vmlinux,但是可執行的鏡像如zImage中含有bootstrap
),充當bootloader和內核鏡像之間的紐帶。
bootstrap通常會校驗內核鏡像、
解壓縮
內核鏡像、重新部署內核鏡像到內存、為內核執行提供合適的上下文(無非是關中斷、開指令cache和數據cache、設置c語言運行環境)
執行流程
上電-->bootloader
-->bootstrap(head.o)-->內核vmlinux(head.o)-->內核start_kernel(main.o)
以上兩個head.o並不相同
bootstrap用的是/arch/arm/boot/compressed/head.S
內核vmlinux用的是/arch/arm/kernel/head.S
雖然都是head.o,但是不在一個時代了,自此區分開了bootstrap和內核vmlinux
等於你看到Uncompressing
Linux...
done,
booting
the
kernel.
還屬於bootstrap
等到列印出第二行
內核版本
信息的時候,就已經是真正的內核main.o的時代了
一個嚴格意義上的內核,make的一個最重要的生成文件
vmlinux
去掉了符號、標記和注釋後生成了image
gzip壓縮後變成piggy.gz
接下來,一個名為piggy.s的文件被匯編成piggy.o
非常有意思的是它僅有7行代碼,其實就只有把piggy.gz
包含進來的作用
.section
.piggydata,#alloc
.globl
input_data
input_data:
.incbin
"arch/arm/boot/compressed/piggy.gz"
.globl
input_data_end
input_data_end:
接著piggy.o同misc.o、head.o等屬於bootstrap的代碼一起鏈接成為zImage等可以被引導的合成鏡像。
其中misc.o負責解壓縮、head.o
head_xx.o
負責進行內核上下文的初始化
Ⅷ 1根據本次開發實驗,簡述嵌入式系統開發流程2什麼是超級終端
看你需不需要嵌入式操作系統的支持了,如果需要譬如Linux系統,那你就現得裝一個Linux系統,在虛擬機裡面,或者機器上,然後裝交叉編譯環境。開發流程大致是這樣的:首先需要你的開發板和上位機通信才能進行後面的工作,否則什麼都做不了,一般開發板都給你留了網口、COM口、和並口Jtag,大部分時間你是用com口來通信,這樣在上位機可以用超級終端(Windows下)或者Minicom(Linux下)來看操作系統的信息。硬體搭建好以後,需要做下面的工作:1、Bootloader的移植(譬如Uboot、ViVi,或者Redboot等等,有很多啦)2、內核移植(這個網上資料應該很多的)3、文件系統移植4、Linux下的驅動設計和程序設計大致就這樣,再細的話可以在網上搜索,有很多資料。如果不用操作系統的話那就就簡單了,只要裝一個ADS(開發軟體)就可以了,在裡面編好程序(可以用C語言或者匯編語言),之後用jtag下載到板子里就行了。你的是實時時鍾設計,這就夠了,實際也用不上操作系統就能實現。用C語言做還是很簡單的~
Ⅸ 關於bootloader的一些問題。高手確定的回答。
簡單地說,BootLoader就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬體設備、建立內存空間映射圖,從而將系統的軟硬體環境帶到一個合適狀態,以便為最終調用操作系統內核准備好正確的環境。在嵌入式系統中,通常並沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內嵌一段短小的啟動程序),因此整個系統的載入啟動任務就完全由BootLoader來完成。比如在一個基於ARM7TDMI core的嵌入式系統中,系統在上電或復位時通常都從地址0x00000000處開始執行,而在這個地址處安排的通常就是系統的BootLoader程序。
在專用的嵌入式板子運行GNU/Linux系統已經變得越來越流行。一個嵌入式Linux系統從軟體的角度看通常可以分為四個層次: 1、 引導載入程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。 2、 Linux內核。特定於嵌入式板子的定製內核以及內核的啟動參數。 3、 文件系統。包括根文件系統和建立於Flash內存設備之上文件系統。通常用ramdisk來作為rootfs。 4、 用戶應用程序。特定於用戶的應用程序。有時在用戶應用程序和內核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。 引導載入程序是系統加電後運行的第一段軟體代碼。PC機中的引導載入程序由BIOS(其本質就是一段固件程序)和位於硬碟MBR中的OS BootLoader(比如,LILO和GRUB等)一起組成。BIOS在完成硬體檢測和資源分配後,將硬碟MBR中的BootLoader讀到系統的RAM中,然後將控制權交給OS BootLoader。BootLoader的主要運行任務就是將內核映象從硬碟上讀到 RAM 中,然後跳轉到內核的入口點去運行,也即開始啟動操作系統。 通常,BootLoader是嚴重地依賴於硬體而實現的,特別是在嵌入式世界。因此,在嵌入式世界裡建立一個通用的BootLoader幾乎是不可能的。盡管如此,我們仍然可以對BootLoader歸納出一些通用的概念來,以指導用戶特定的BootLoader設計與實現。
編輯本段常見bootloader
Redboot
Redboot是Redhat公司隨eCos發布的一個BOOT方案,是一個開源項目。 當前Redboot的最新版本是Redboot-2.0.1,Redhat公司將會繼續支持該項目。 Redboot支持的處理器構架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一個完善的嵌入式系統Boot Loader。 Redboot是在ECOS的基礎上剝離出來的,繼承了ECOS的簡潔、輕巧、可靈活配置、穩定可靠等品質優點。它可以使用X-modem或Y-modem協議經由串口下載,也可以經由乙太網口通過BOOTP/DHCP服務獲得IP參數,使用TFTP方式下載程序映像文件,常用於調試支持和系統初始化(Flash下載更新和網路啟動)。Redboot可以通過串口和乙太網口與GDB進行通信,調試應用程序,甚至能中斷被GDB運行的應用程序。Redboot為管理FLASH映像,映像下載,Redboot配置以及其他如串口、乙太網口提供了一個互動式命令行介面,自動啟動後,REDBOOT用來從TFTP伺服器或者從Flash下載映像文件載入系統的引導腳本文件保存在Flash上。當前支持單板機的移植版特性有: - 支持ECOS,Linux操作系統引導 - 在線讀寫Flash - 支持串列口kermit,S-record下載代碼 - 監控(minitor)命令集:讀寫I/O,內存,寄存器、 內存、外設測試功能等 Redboot是標準的嵌入式調試和引導解決方案,支持幾乎所有的處理器構架以及大量的外圍硬體介面,並且還在不斷地完善過程中。
ARMboot
ARMboot是一個ARM平台的開源固件項目,它特別基於PPCBoot,一個為PowerPC平台上的系統提供類似功能的姊妹項目。鑒於對PPCBoot的嚴重依賴性,已經與PPCBoot項目合並,新的項目為U-Boot。 ARMboot發布的最後版本為ARMboot-1.1.0,2002年ARMboot終止了維護。 ARMboot支持的處理器構架有StrongARM ,ARM720T ,PXA250 等,是為基於ARM或者StrongARM CPU的嵌入式系統所設計的。 ARMboot的目標是成為通用的、容易使用和移植的引導程序,非常輕便地運用於新的平台上。ARMboot是GPL下的ARM固件項目中唯一支持Flash快閃記憶體,BOOTP、DHCP、TFTP網路下載,PCMCLA尋線機等多種類型來引導系統的。特性為: -支持多種類型的FLASH -允許映像文件經由BOOTP、DHCP、TFTP從網路傳輸; -支持串列口下載S-record或者binary文件 -允許內存的顯示及修改 -支持jffs2文件系統等 Armboot對S3C44B0板的移植相對簡單,在經過刪減完整代碼中的一部分後,僅僅需要完成初始化、串口收發數據、啟動計數器和FLASH操作等步驟,就可以下載引導uClinux內核完成板上系統的載入。總得來說,ARMboot介於大、小型Boot Loader之間,相對輕便,基本功能完備,缺點是缺乏後續支持。
U-Boot
U-Boot是由開源項目PPCBoot發展起來的,ARMboot並入了PPCBoot,和其他一些arch的Loader合稱U-Boot。2002年12月17日第一個版本U-Boot-0.2.0發布,同時PPCBoot和ARMboot停止維護。 U-Boot自發布以後已更新6次,最新版本為U-Boot-1.1.1,U-Boot的支持是持續性的。 U-Boot支持的處理器構架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等, U-Boot(Universal Bootloader)從名字就可以看出,它是在GPL下資源代碼最完整的一個通用Boot Loader。 U-Boot提供兩種操作模式:啟動載入(Boot loading)模式和下載(Downloading)模式,並具有大型Boot Loader的全部功能。主要特性為: -SCC/FEC乙太網支持 -BOOTP/TFTP引導 -IP,MAC預置功能 -在線讀寫FLASH,DOC, IDE,IIC,EEROM,RTC -支持串列口kermit,S-record下載代碼 -識別二進制、ELF32、pImage格式的Image,對Linux引導有特別的支持 -監控(minitor)命令集:讀寫I/O,內存,寄存器、內存、外設測試功能等 -腳本語言支持(類似BASH腳本) -支持WatchDog,LCD logo,狀態指示功能等 U-Boot的功能是如此之強大,涵蓋了絕大部分處理器構架,提供大量外設驅動,支持多個文件系統,附帶調試、腳本、引導等工具,特別支持Linux,為板級移植做了大量的工作。U-Boot1.1.1版本特別包含了對SA1100和44B0晶元的移植,所以44B0移植主要是針對Board 的移植,包括FLASH、內存配置以及串口波特率等等。U-Boot的完整功能性和後續不斷的支持,使系統的升級維護變得十分方便。
Blob
Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw發布的,是專門為StrongARM 構架下的LART設計的Boot Loader。 Blob的最後版本是blob-2.0.5。 Blob支持SA1100的LART主板,但用戶也可以自行修改移植。 Blob也提供兩種工作模式,在啟動時處於正常的啟動載入模式,但是它會延時 10 秒等待終端用戶按下任意鍵而將 Blob 切換到下載模式。如果在 10 秒內沒有用戶按鍵,則 Blob 繼續啟動 Linux 內核。其基本功能為: 初始化硬體(CPU速度,存儲器,中斷,RS232串口) -引導Linux內核並提供ramdisk - 給LART下載一個內核或者ramdisk -給FLASH片更新內核或者ramdisk -測定存儲配置並通知內核 -給內核提供一個命令行 Blob功能比較齊全,代碼較少,比較適合做修改移植,用來引導Liunx,目前大部分S3C44B0板都用Blob修改移植後來載入uClinux。
Bios-lt
Bios-lt是專門支持三星(Samsung)公司ARM構架處理器S3C4510B的Loader,可以設置CPU/ROM/SDRAM/EXTIO,管理並燒寫FLASH,裝載引導uClinux內核。這是國內工程師申請GNU通用公共許可發布的。 Bios-lt的最新版本是Bios-lt-0.74,另外還提供了S3C4510B的一些外圍驅動。
Bootldr
Bootldr是康柏(Compaq)公司發布的,類似於compaq iPAQ Pocket PC,支持SA1100晶元。它被推薦用來引導Llinux,支持串口Y-modem協議以及jffs文件系統。 Bootldr的最後版本為Bootldr-2.19。
Ⅹ stm32移植ecos #1,為什麼要把ecos移植到stm32平台上 reille ...
作為eCos推廣計劃一部分,會將eCos移植到當前非常流行的stm32處理器上,在此基礎上,展開一些應用開發設計,並提供工程模板。選擇stm32作為eCos推廣突破口,有以下幾個因素:在對eCos有一點了解或有所耳聞的大多數工程師眼中,eCos可能被定位於像ucosII一樣級別的嵌入式OS,換句話說,eCos的應用場合應該是類似ARM7、Cortex-M處理器之類的CPU中; 當前,STM32相比其它家的Cortex-M處理器更加流行,被廣泛應用到許多低端嵌入式產品中,而且最重要的是,學者眾多,開發板資源非常豐富; 目前市場上,stm32開發板一大堆,很容易利用當前資源展開eCos的學習; 像ARM7和Cortex-M處理器之類的CPU中,使用的OS大多數是ucosII,而這個OS是收費的,不能商用,相反,eCos是開源免費使用的,如果在這眾多嵌入式應用中,可使用eCos在多數產品應用中替換掉ucosii,那麼推廣效果將更加理想; 對於ARM9以上的高端處理器,工程師更寧願使用linux、VxWorks、Windows CE、uclinux等OS,而不願意使用免費便資源匱乏的eCos; 這里有一個關鍵因素是,eCos必須展現它的應用價值和它的魅力,不然憑什麼人家對這個OS產生興趣並在產品中使用它。0您可能也喜歡:stm32移植ecos #3,我的stm32開發板配置stm32移植ecos #2,選購stm32開發板stm32移植ecos #7,移植ecos並成功運行helloworld程序,配置編譯生成靜態鏈接庫文件stm32移植ecos #8,移植ecos並成功運行helloworld程序,編譯鏈接生成helloworld程序stm32移植ecos #11,使用自己的模板(Template)stm32移植ecos #4,移植redboot(ROM啟動方式)上篇stm32移植ecos #9,移植ecos並成功運行helloworld程序,使用redboot引導運行內存中的helloworld程序stm32移植ecos #6,redboot的疑問和問題,redboot是必需的嗎?