移植環(huán)境
CPU:S3C2440
交叉編譯器:arm-linux-gcc-4.3.3
虛擬機(jī)系統(tǒng):Ubuntu12.04
參考資料:《天嵌科技linux移植手冊(cè)》
移植步驟
1、獲取內(nèi)核源碼
網(wǎng)址:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/
找到linux-2.6.30.4壓縮包下載即可,然后拷貝到虛擬機(jī)中解壓
2、在系統(tǒng)中添加對(duì)ARM的支持
進(jìn)入內(nèi)核源碼根目錄 Makefile中,修改
ARCH = arm
CROSS_COMPILE = arm-linux-
3、修改平臺(tái)輸入時(shí)鐘
修改內(nèi)核源碼
arch/arm/mach-s3c2440/mach-smdk2440.c” 文件的大概162行或163行,把16.9344MHz改為12MHz
然后make menuconfig ,進(jìn)入默認(rèn)菜單保存一下
4、嘗試編譯內(nèi)核,給內(nèi)核打補(bǔ)丁
make uImage,出現(xiàn)某某未定義,其實(shí)是內(nèi)核需要打補(bǔ)丁
可以參考以下文章 https://blog.csdn.net/pillarpeng/article/details/38282193
打完補(bǔ)丁后,編譯生成uImage,下載到開(kāi)發(fā)板,現(xiàn)象如下
5、制作自己的配置清單
先調(diào)用自帶的一個(gè)默認(rèn)配置單,該配置單在內(nèi)核源碼的arch/arm/configs/目錄下面,名為:s3c2410_defconfig,該配置文件里面選擇了幾乎所有的和 S3C24XX 系列 CPU 相關(guān)的配置選項(xiàng),在該配置單的基礎(chǔ)上進(jìn)行配置。
載入這個(gè)配置單,選擇和S3C2440相關(guān)的設(shè)置項(xiàng)。
選擇支持EABI
6、修改機(jī)器碼,編譯鏡像
機(jī)器碼保存在內(nèi)核源碼的“arch/arm/tools/mach-types”文件中,在大概 379 行,把原來(lái)的 362 改為 168 保存即可。這個(gè)機(jī)器碼是和U-boot相匹配的。
編譯uImage成功如下所示:
下載uImage到開(kāi)發(fā)板中:
7、Nandflash驅(qū)動(dòng)移植
到這里僅僅是可以引導(dǎo)了,還需要配置Nandflash。
修改內(nèi)核源碼“arch/arm/plat-s3c24xx/common-smdk.c”文件,在 109 行左右,有一個(gè)結(jié)構(gòu)體名為:
smdk_default_nand_part[],將其修改為如下列表所示:
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = “l(fā)e2440_Board_uboot”,
.offset = 0x00000000,
.size = 0x00040000,
},
[1] = {
.name = “l(fā)e2440_Board_kernel”,
.offset = 0x00200000,
.size = 0x00300000,
},
[2] = {
.name = “l(fā)e2440_Board_yaffs2”,
.offset = 0x00500000,
.size = MTDPART_SIZ_FULL
}
};
然后修改“drivers/mtd/nand/s3c2410.c”文件的 752 行
將原來(lái)的內(nèi)容改為如下所示
chip->ecc.mode = NAND_ECC_NONE;
在內(nèi)核配置單中添加上對(duì)Nandflash的支持
Device Drivers —>
<> NAND Device Support -->
<> NAND Flash support for S3C2410/S3C2440 SoC
然后編譯出鏡像,燒到開(kāi)發(fā)版中,現(xiàn)象如下所示:
8、網(wǎng)卡驅(qū)動(dòng)移植
因?yàn)槲掖蛩闶褂肗FS網(wǎng)絡(luò)文件系統(tǒng)來(lái)掛載根文件系統(tǒng),所以只需要配置一下網(wǎng)卡和NFS即可。
修改 Linux-2.6.30.4 內(nèi)核源碼的“arch/arm/mach-s3c2440/mach-smdk2440.c”文件,添加頭文件如下:
#include 在 154 行添加如下內(nèi)容所示: /* DM9000 */ static struct resource s3c_dm9k_resource[] = { [0] = { .start= S3C2410_CS4, .end = S3C2410_CS4 + 3, .flags = IORESOURCE_MEM, }, [1] = { .start= S3C2410_CS4 + 4, .end = S3C2410_CS4 + 4 + 3, .flags = IORESOURCE_MEM, }, [2] = { .start= IRQ_EINT7, .end = IRQ_EINT7, .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING, } }; static struct dm9000_plat_data s3c_dm9k_platdata = { .flags = DM9000_PLATF_16BITONLY, }; struct platform_device s3c_device_dm9000 = { .name = “dm9000”, .id = 0, .num_resources = ARRAY_SIZE(s3c_dm9k_resource), .resource = s3c_dm9k_resource, .dev = { .platform_data = &s3c_dm9k_platdata, } }; 在 194 行添加如下內(nèi)容所示: static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &s3c_device_dm9000, //添加的 }; 在 Linux-2.6.30.4 中“drivers/net/dm9000.c”文件中修改如下: 在 41 行添加的頭文件內(nèi)容如下: #if defined(CONFIG_ARCH_S3C2410) #include #endif 在 1194 行添加內(nèi)容如下所示: #if defined(CONFIG_ARCH_S3C2410) unsigned int oldval_bwscon = *(volatile unsigned int *)S3C2410_BWSCON; unsigned int oldval_bankcon4 = *(volatile unsigned int *)S3C2410_BANKCON4; #endif 在 1209 行添加如下內(nèi)容: #if defined(CONFIG_ARCH_S3C2410) *((volatile unsigned int *)S3C2410_BWSCON) = (oldval_bwscon & ~(3<<16)) | S3C2410_BWSCON_DW4_16 | S3C2410_BWSCON_WS4 | S3C2410_BWSCON_ST4; *((volatile unsigned int )S3C2410_BANKCON4) = 0x1f7c; #endif 修改 1278 行開(kāi)始的內(nèi)容如下所示:(紅色部分為修改內(nèi)容,主要是添加 mac 值) #if defined(CONFIG_ARCH_S3C2410) printk(“Now use the default MAC address: 10:23:45:67:89:abn”); mac_src = “EmbedSky”; ndev->dev_addr[0] = 0x10; ndev->dev_addr[1] = 0x23; ndev->dev_addr[2] = 0x45; ndev->dev_addr[3] = 0x67; ndev->dev_addr[4] = 0x89; ndev->dev_addr[5] = 0xab; #else mac_src = “eeprom”; / try reading the node address from the attached EEPROM / for (i = 0; i < 6; i += 2) dm9000_read_eeprom(db, i / 2, ndev->dev_addr+i); if (!is_valid_ether_addr(ndev->dev_addr) && pdata != NULL) { mac_src = “platform data”; memcpy(ndev->dev_addr, pdata->dev_addr, 6); } if (!is_valid_ether_addr(ndev->dev_addr)) { / try reading from mac */ mac_src = “chip”; for (i = 0; i < 6; i++) ndev->dev_addr[i] = ior(db, i+DM9000_PAR); } if (!is_valid_ether_addr(ndev->dev_addr)) dev_warn(db->dev, "%s: Invalid ethernet MAC address. Please " “set using ifconfign”, ndev->name); #endif 在 1423 行添加如下內(nèi)容: #if defined(CONFIG_ARCH_S3C2410) *(volatile unsigned int *)S3C2410_BWSCON = oldval_bwscon; *(volatile unsigned int *)S3C2410_BANKCON4 = oldval_bankcon4; #endif 修改完以上的內(nèi)容之后,輸入:#make menuconfig,進(jìn)入配置單,然后添加上對(duì) DM9000 網(wǎng)卡和NFS的配置,之前載入的s3c2410_defconfig的配置單已經(jīng)做好了這些配置,此處不再展示。 最后make uImage編譯成鏡像文件下載到開(kāi)發(fā)板如下: 至此,linux-2.6.30.4內(nèi)核基本移植完成,剩下的根文件系統(tǒng)構(gòu)建和常用驅(qū)動(dòng)移植下次在寫(xiě)。
上一篇:移植Linux-2.6.30.4內(nèi)核之根文件系統(tǒng)構(gòu)建
下一篇:嵌入式系統(tǒng)啟動(dòng)流程(學(xué)習(xí)筆記)
推薦閱讀
史海拾趣
在快速發(fā)展的同時(shí),Bce Sud始終關(guān)注企業(yè)社會(huì)責(zé)任和可持續(xù)發(fā)展。公司積極參與環(huán)保、公益等活動(dòng),致力于為社會(huì)做出貢獻(xiàn)。同時(shí),公司還注重員工的培訓(xùn)與發(fā)展,為員工提供良好的工作環(huán)境和職業(yè)發(fā)展機(jī)會(huì)。這些舉措不僅提升了公司的社會(huì)形象,也為公司的長(zhǎng)遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
這些故事基于一般的電子行業(yè)公司成長(zhǎng)經(jīng)歷構(gòu)建,旨在展示一個(gè)虛構(gòu)的電子行業(yè)公司如何從初創(chuàng)走向成功的過(guò)程。雖然故事中的公司名稱(chēng)和具體細(xì)節(jié)是虛構(gòu)的,但其中的發(fā)展邏輯和經(jīng)驗(yàn)教訓(xùn)對(duì)于現(xiàn)實(shí)中的電子行業(yè)公司來(lái)說(shuō)仍具有一定的參考價(jià)值。
在快速發(fā)展的同時(shí),Axon' Cable公司始終關(guān)注環(huán)保問(wèn)題。公司積極采用環(huán)保材料和工藝,減少生產(chǎn)過(guò)程中的污染排放。此外,Axon' Cable還投入大量資源研發(fā)環(huán)保型產(chǎn)品,為推動(dòng)電子行業(yè)的可持續(xù)發(fā)展做出了積極貢獻(xiàn)。這些環(huán)保舉措不僅提升了公司的社會(huì)形象,也為公司的長(zhǎng)期發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
為了進(jìn)一步擴(kuò)大市場(chǎng)份額和提升競(jìng)爭(zhēng)力,Axon' Cable公司開(kāi)始實(shí)施全球化戰(zhàn)略。公司在全球范圍內(nèi)設(shè)立了多個(gè)生產(chǎn)基地和研發(fā)中心,積極開(kāi)拓國(guó)際市場(chǎng)。同時(shí),Axon' Cable還加強(qiáng)了與國(guó)際知名企業(yè)的合作,共同推動(dòng)技術(shù)創(chuàng)新和產(chǎn)業(yè)升級(jí)。這些舉措使得Axon' Cable的產(chǎn)品在全球范圍內(nèi)得到了廣泛應(yīng)用,公司的國(guó)際影響力也逐步提升。
ADI的創(chuàng)業(yè)故事始于1965年,創(chuàng)始人Ray Stata與Matthew Lorber在美國(guó)馬薩諸塞州劍橋市的一座公寓地下室開(kāi)始了他們的創(chuàng)業(yè)之路。最初,ADI并沒(méi)有直接涉足芯片制造,而是專(zhuān)注于開(kāi)發(fā)運(yùn)算放大器等分立器件,以提供精確放大的改良型電信號(hào)。這一決策是基于當(dāng)時(shí)新興市場(chǎng)的需求,展現(xiàn)了兩位創(chuàng)始人的市場(chǎng)敏銳度和創(chuàng)新精神。
Concord Semiconductor Corp自創(chuàng)立之初,便專(zhuān)注于半導(dǎo)體技術(shù)的研發(fā)與創(chuàng)新。公司在早期階段成功開(kāi)發(fā)出一種高效能、低功耗的半導(dǎo)體芯片,這一創(chuàng)新成果迅速在行業(yè)內(nèi)引起關(guān)注。隨著技術(shù)的不斷完善和市場(chǎng)的廣泛認(rèn)可,公司的產(chǎn)品線逐漸豐富,客戶(hù)群體也不斷擴(kuò)大。技術(shù)創(chuàng)新成為Concord Semiconductor Corp發(fā)展的核心驅(qū)動(dòng)力,推動(dòng)公司不斷向前發(fā)展。
DDK公司在發(fā)展過(guò)程中,始終牢記社會(huì)責(zé)任,積極履行企業(yè)公民的義務(wù)。公司積極參與公益事業(yè),關(guān)注環(huán)境保護(hù)和社會(huì)發(fā)展,為社會(huì)做出了積極貢獻(xiàn)。同時(shí),DDK公司還積極推動(dòng)行業(yè)健康發(fā)展,與同行企業(yè)共同維護(hù)市場(chǎng)秩序和公平競(jìng)爭(zhēng)環(huán)境。這種社會(huì)責(zé)任的擔(dān)當(dāng),讓DDK公司在電子行業(yè)中樹(shù)立了良好的企業(yè)形象。
【藏書(shū)閣】模-數(shù)與數(shù)-模轉(zhuǎn)換技術(shù)基礎(chǔ) 目錄: 第一章 概論 第二章 采樣和量化 第三章 模擬開(kāi)關(guān)和多路切換器 第四章 放大器、采樣/保持器和比較器 第五章 數(shù)-模轉(zhuǎn)換器 第六章 模-數(shù)轉(zhuǎn)換器 第七章 數(shù)據(jù)采集系統(tǒng)與數(shù)據(jù)分配系統(tǒng) 第八章 轉(zhuǎn)角/直線位移-數(shù)字轉(zhuǎn)換器 第九章 噪聲干擾 ...… 查看全部問(wèn)答∨ |
|
西安華為研究所開(kāi)始了新一輪招聘, 專(zhuān)業(yè):計(jì)算機(jī),通信,電子,物理等工科專(zhuān)業(yè)(這次專(zhuān)業(yè)要求不很?chē)?yán)) 工作經(jīng)驗(yàn):至少工作一年 如有意者:請(qǐng)將自己的建立發(fā)到郵箱& ...… 查看全部問(wèn)答∨ |
|
請(qǐng)問(wèn),串口通信接收到的數(shù)據(jù)是怎么樣的呢?我的是9600,8.0.1. 我的理解是:接收的應(yīng)該是:0-256的字符。但是我接收的到的數(shù)據(jù)竟然大小有;超過(guò)256的。 標(biāo)準(zhǔn)的應(yīng)該是: 01 04 04 01 08 02 15 BB 15 但是我收到的是:1025 250 460 78 ...… 查看全部問(wèn)答∨ |
AD 芯片進(jìn)行高速采集時(shí) 數(shù)據(jù)采集程序該怎么編寫(xiě) 我編了個(gè)數(shù)據(jù)采集程序 我是將數(shù)據(jù)直接存到一個(gè)TXT文本中的。 但是在40KHZ采集時(shí) 點(diǎn)數(shù)不對(duì)。 請(qǐng)教高手該如何實(shí)現(xiàn)高速數(shù)據(jù)采集… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來(lái)
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問(wèn)外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 阿里黑科技落地!夸克AI眼鏡全球首發(fā),高德、淘寶、支付寶都能用
- 化繁為簡(jiǎn), 適配復(fù)雜磁場(chǎng)環(huán)境,MT73xx 3D雙路輸出霍爾鎖存器賦能車(chē)規(guī)電機(jī)精準(zhǔn)控制
- 9.5億美元收購(gòu)恩智浦MEMS傳感器業(yè)務(wù),意法半導(dǎo)體 在傳感器領(lǐng)域的地位再升級(jí)
- 高性能電動(dòng)滑板車(chē) BLDC 電機(jī)驅(qū)動(dòng)器:技術(shù)解析與應(yīng)用展望
- 5G工業(yè)網(wǎng)關(guān)的“邊緣計(jì)算+AI推理”一體化設(shè)計(jì),PLC協(xié)議解析與缺陷檢測(cè)的實(shí)時(shí)聯(lián)動(dòng)
- AR眼鏡的“工業(yè)指令投射”系統(tǒng),SLAM的空間定位、PLC數(shù)據(jù)實(shí)時(shí)疊加顯示
- 多光譜氣體傳感器的抗交叉干擾設(shè)計(jì)
- 多模態(tài)融合感知的“語(yǔ)義-幾何”聯(lián)合建模
- 工業(yè)觸摸屏的“壓感-手勢(shì)”多模態(tài)交互設(shè)計(jì)
- 工業(yè)機(jī)器人高精度力控的“雙模融合”傳感器設(shè)計(jì)
- 【社區(qū)大講堂】頂嵌與你一起:動(dòng)手做嵌入式產(chǎn)品
- 快來(lái)!月月有獎(jiǎng)第27期開(kāi)始了~
- e絡(luò)盟e選第三期:熱門(mén)產(chǎn)品5折起,價(jià)格鎖定更安心
- 來(lái)聊聊你與MP3的情緣吧!——MP3播放板等你拿
- 端午節(jié)芯幣兌換禮品專(zhuān)場(chǎng)
- 【EEWORLD第二十七屆】2011年06月社區(qū)明星人物揭曉!
- 最熱8月,帶著你的原創(chuàng)一起High!
- 贏京東卡——我家房子“成精”了!與英飛凌一起來(lái)探索吧!
- 下載信息娛樂(lè)系統(tǒng)精品文章,贏【米家臺(tái)燈、小米保溫杯、米家藍(lán)牙溫濕計(jì)】,開(kāi)啟MPS汽車(chē)技術(shù)進(jìn)階之旅!
- 恩智浦無(wú)線MCU應(yīng)用征集+100套開(kāi)發(fā)套件申請(qǐng)
- MCU+MPU= Sitara? AM2x
- 基于TQ2440的u-boot-1.1.6移植(基本步驟)
- 嵌入式系統(tǒng)啟動(dòng)流程(學(xué)習(xí)筆記)
- 基于TQ2440的linux-2.6.30.4內(nèi)核移植
- 移植Linux-2.6.30.4內(nèi)核之根文件系統(tǒng)構(gòu)建
- 無(wú)人清掃車(chē)開(kāi)上橘子洲頭
- 通過(guò)高精度識(shí)別熱帶低氣壓征兆云 人工智能或能提前一周預(yù)測(cè)臺(tái)風(fēng)
- 15批次光伏并網(wǎng)逆變器產(chǎn)品抽查結(jié)果出爐:蘇州阿瑟頓不合格
- 逆變器屏幕沒(méi)有顯示怎么回事?
- 光伏發(fā)電逆變器工作原理是什么?