2440的linux移植手冊(cè)滿天飛,到了6410怎么就沒有了呢?
既然源碼都給了,為什么不把移植步驟寫出來,好讓大家學(xué)習(xí)呢?
今日,小弟自搞奮勇,想自己移植一遍linux-2.6.38,參考友善給的源碼,覺得既然源碼都有了,想發(fā)掘移植步驟應(yīng)該不難吧,嘿嘿
環(huán)境 VirtualBox+ubuntu 10.04
編譯器,友善自帶arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz
硬件,tiny6410,核心板號(hào)1107
linux-2.6.38到tiny6410的移植手冊(cè)(連載2)__網(wǎng)卡&NF
http://www.arm9home.net/read.php?tid-14211.html
linux-2.6.38到tiny6410的移植手冊(cè)(連載3)__ LCD&觸摸屏
http://www.arm9home.net/read.php?tid=14261
1、下載linux-2.6.38的源碼,ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
2、解壓 tar xvfj /mnt/ubuntu/linux-2.6.38.tar.bz2 -C .
3、vi Makefile 191行改為 ARCH ?= arm
4、cp arch/arm/configs/s3c6400_defconfig .config
5、make menuconfig
5、General setup->(/usr/4.5.1/bin/arm-linux-) Cross-compiler tool prefix 我將編譯器解壓到了/usr/4.5.1目錄
System Type->[*] MINI6410 選上,其他的可以去掉,不確定的可以參考友善之臂的
這樣編譯出來的內(nèi)核是可以被uboot引導(dǎo)的,然后是增加nand flash支持
vi arch/arm/mach-s3c64xx/mach-mini6410.c
第186行
struct mtd_partition mini6410_nand_part[] = {
{
.name = "Bootloader",
.offset = 0,
.size = (4 * 128 *SZ_1K),
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = "Kernel",
.offset = (4 * 128 *SZ_1K),
.size = (5*SZ_1M) ,
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = "File System",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
}
};
分區(qū)可以改成自己想要的。
drivers/mtd/nand/s3c_nand.c和arch/arm/plat-samsung/include/plat/regs-nand.h兩個(gè)文件可以從友善的源碼中
拷貝過來,這是他們自己寫的,當(dāng)然drivers/mtd/nand/s3c_nand_mlc.fo也要拷貝過來,這是友善沒有開源的一個(gè)驅(qū)動(dòng)之一,
所以不用研究了,拷過來就是了。
修改drivers/mtd/nand/nand_base.c文件
修改方法如下,“-”就是要去掉的內(nèi)容,“+”就是要增加的內(nèi)容,@@后面的是行號(hào),
嫌麻煩的的直接將drivers/mtd/nand/nand_base.c拷過來覆蓋掉
嘿嘿,下面是我diff出來的東西。
@@ -342,7 +342,7 @@
*/
static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
{
- int page, chipnr, res = 0;
+ int page, res = 0;
struct nand_chip *chip = mtd->priv;
u16 bad;
@@ -351,6 +351,8 @@
page = (int)(ofs >> chip->page_shift) & chip->pagemask;
+#if 0
+ /* Moved to nand_block_checkbad() for chip specify support */
if (getchip) {
chipnr = (int)(ofs >> chip->chip_shift);
@@ -359,6 +361,7 @@
/* Select the NAND device */
chip->select_chip(mtd, chipnr);
}
+#endif
if (chip->options & NAND_BUSWIDTH_16) {
chip->cmdfunc(mtd, NAND_CMD_READOOB, chip->badblockpos & 0xFE,
@@ -378,8 +381,10 @@
else
res = hweight8(bad) < chip->badblockbits;
+#if 0
if (getchip)
nand_release_device(mtd);
+#endif
return res;
}
@@ -477,9 +482,26 @@
int allowbbt)
{
struct nand_chip *chip = mtd->priv;
+ int chipnr, res = 0;
+
+ /* Chip specify block_bad() support */
+ if (!chip->bbt) {
+ if (getchip) {
+ chipnr = (int)(ofs >> chip->chip_shift);
- if (!chip->bbt)
- return chip->block_bad(mtd, ofs, getchip);
+ nand_get_device(chip, mtd, FL_READING);
+
+ /* Select the NAND device */
+ chip->select_chip(mtd, chipnr);
+ }
+
+ res = chip->block_bad(mtd, ofs, getchip);
+
+ if (getchip)
+ nand_release_device(mtd);
+
+ return res;
+ }
/* Return info from the table */
return nand_isbad_bbt(mtd, ofs, allowbbt);
@@ -3002,23 +3024,15 @@
id_data[0] == NAND_MFR_SAMSUNG &&
(chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
id_data[5] != 0x00) {
+ int __oobsz[] = { 0, 128, 218, 400 };
/* Calc pagesize */
mtd->writesize = 2048 << (extid & 0x03);
extid >>= 2;
/* Calc oobsize */
- switch (extid & 0x03) {
- case 1:
- mtd->oobsize = 128;
- break;
- case 2:
- mtd->oobsize = 218;
- break;
- case 3:
- mtd->oobsize = 400;
- break;
- default:
+ if (extid & 0x10) {
mtd->oobsize = 436;
- break;
+ } else {
+ mtd->oobsize = __oobsz[(extid & 0x03)];
}
extid >>= 2;
/* Calc blocksize */
@@ -3099,16 +3113,21 @@
/* Calculate the address shift from the page size */
chip->page_shift = ffs(mtd->writesize) - 1;
+
/* Convert chipsize to number of pages per chip -1. */
- chip->pagemask = (chip->chipsize >> chip->page_shift) - 1;
+ if (!chip->pagemask) {
+ chip->pagemask = (chip->chipsize >> chip->page_shift) - 1;
+ }
chip->bbt_erase_shift = chip->phys_erase_shift =
ffs(mtd->erasesize) - 1;
- if (chip->chipsize & 0xffffffff)
- chip->chip_shift = ffs((unsigned)chip->chipsize) - 1;
- else {
- chip->chip_shift = ffs((unsigned)(chip->chipsize >> 32));
- chip->chip_shift += 32 - 1;
+ if (!chip->chip_shift) {
+ if (chip->chipsize & 0xffffffff)
+ chip->chip_shift = ffs((unsigned)chip->chipsize) - 1;
+ else {
+ chip->chip_shift = ffs((unsigned)(chip->chipsize >> 32));
+ chip->chip_shift += 32 - 1;
+ }
}
/* Set the bad block position */
@@ -3126,8 +3145,11 @@
*/
if ((chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
(*maf_id == NAND_MFR_SAMSUNG ||
- *maf_id == NAND_MFR_HYNIX))
- chip->options |= NAND_BBT_SCANLASTPAGE;
+ *maf_id == NAND_MFR_HYNIX)) {
+ if (mtd->writesize < 4096) {
+ chip->options |= NAND_BBT_SCANLASTPAGE;
+ }
+ }
else if ((!(chip->cellinfo & NAND_CI_CELLTYPE_MSK) &&
(*maf_id == NAND_MFR_SAMSUNG ||
*maf_id == NAND_MFR_HYNIX ||
然后修改drivers/mtd/nand/Kconfig和drivers/mtd/nand/Makefile文件
在drivers/mtd/nand/Kconfig 238行增加
config MTD_NAND_S3C
tristate "NAND Flash support for S3C SoC"
depends on (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX) && MTD_NAND
help
This enables the NAND flash controller on the S3C.
No board specfic support is done by this driver, each board
must advertise a platform_device for the driver to attach.
config MTD_NAND_S3C_DEBUG
bool "S3C NAND driver debug"
depends on MTD_NAND_S3C
help
Enable debugging of the S3C NAND driver
configMTD_NAND_S3C_HWECC
bool "S3C NAND Hardware ECC"
depends on MTD_NAND_S3C
help
Enable the use of the S3C's internal ECC generator when
using NAND. Early versions of the chip have had problems with
incorrect ECC generation, and if using these, the default of
software ECC is preferable.
If you lay down a device with the hardware ECC, then you will
currently not be able to switch to software, as there is no
implementation for ECC method used by the S3C
drivers/mtd/nand/Makefile中20行增加
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand.o
末尾再增加
S3C_NAND_MLC_SRC = $(shell ls drivers/mtd/nand/s3c_nand_mlc.c 2>/dev/null)
ifeq ($(S3C_NAND_MLC_SRC),)
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand_mlc.fo
else
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand_mlc.o
endif
然后再make menuconfig
Device Drivers--->
<*> Memory Technology Device (MTD) support --->
[*] MTD partitioning support
[*] Command line partition table parsing
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
<*> NAND Device Support --->
< > NAND Flash support for Samsung S3C SoCs 去掉不要選
<*> NAND Flash support for S3C SoC
[*] S3C NAND Hardware ECC
make zImage
編譯出來了,nand flash就可以用了。
上一篇:linux-2.6.38到tiny6410的移植手冊(cè)(連載3)__ LCD&觸摸屏
下一篇:linux-2.6.38到tiny6410的移植手冊(cè)(連載2)__網(wǎng)卡&NFS
推薦閱讀
史海拾趣
隨著技術(shù)的不斷成熟,綠索超容的產(chǎn)品線也日益豐富。公司推出了涵蓋大、中、小型超級(jí)電容器在內(nèi)的多種產(chǎn)品規(guī)格,廣泛應(yīng)用于智能電網(wǎng)、新能源、智能表計(jì)、軍工等領(lǐng)域。特別是在智能四表(智能電表、智能水表、智能燃?xì)獗怼⒅悄軣崮鼙恚┑燃?xì)分市場(chǎng)上,綠索超容的產(chǎn)品憑借其穩(wěn)定可靠的性能,贏得了大量客戶的青睞。同時(shí),公司還積極拓展海外市場(chǎng),將中國(guó)制造的超級(jí)電容器推向世界。
Chemi-Con公司的歷史可以追溯到XXXX年,當(dāng)時(shí)鋁電解電容器在日本首次成功實(shí)現(xiàn)產(chǎn)品化。這不僅是電子行業(yè)的一個(gè)里程碑,也是Chemi-Con公司傳奇故事的起點(diǎn)。公司創(chuàng)始人憑借對(duì)技術(shù)的深刻理解和市場(chǎng)的前瞻性,敏銳地捕捉到了鋁電解電容器的巨大潛力,并決定將其作為公司的主營(yíng)業(yè)務(wù)。在創(chuàng)業(yè)初期,Chemi-Con面臨著資金、技術(shù)和市場(chǎng)等多方面的挑戰(zhàn),但創(chuàng)始人憑借著堅(jiān)定的信念和不懈的努力,帶領(lǐng)公司逐步攻克難關(guān),奠定了在鋁電解電容器領(lǐng)域的領(lǐng)先地位。
進(jìn)入21世紀(jì),隨著全球電子產(chǎn)業(yè)的快速發(fā)展,EVERLIGHT迎來了市場(chǎng)擴(kuò)張的機(jī)遇。公司不僅鞏固了在臺(tái)灣市場(chǎng)的領(lǐng)先地位,還積極開拓國(guó)際市場(chǎng)。通過與國(guó)際知名品牌的合作,EVERLIGHT的產(chǎn)品逐漸進(jìn)入全球市場(chǎng),贏得了廣泛認(rèn)可。同時(shí),公司還加強(qiáng)了對(duì)新興市場(chǎng)的開拓,如中國(guó)大陸、東南亞等地區(qū),為公司的持續(xù)發(fā)展注入了新的動(dòng)力。
進(jìn)入新世紀(jì),三環(huán)集團(tuán)繼續(xù)加大研發(fā)投入,力求在電子元件領(lǐng)域取得更多突破。2001年,公司投資生產(chǎn)多層片式陶瓷電容器(MLCC),這是一種廣泛應(yīng)用于電子設(shè)備的關(guān)鍵元件。三環(huán)集團(tuán)憑借其強(qiáng)大的研發(fā)能力和技術(shù)實(shí)力,成功實(shí)現(xiàn)了MLCC的量產(chǎn),并將其應(yīng)用于手機(jī)、電子、通訊等多個(gè)領(lǐng)域。這一突破不僅提升了公司的市場(chǎng)競(jìng)爭(zhēng)力,也進(jìn)一步鞏固了其在電子行業(yè)中的地位。
基于LabVIEW力與變形信號(hào)數(shù)據(jù)自動(dòng)采集與檢測(cè) 基于LabVIEW力與變形信號(hào)數(shù)據(jù)自動(dòng)采集與檢測(cè)… 查看全部問答∨ |
本人現(xiàn)在想從事COS操作系統(tǒng)的開發(fā),不知道各位高手可不可以指教,因?yàn)樵瓉頉]有開發(fā)過!… 查看全部問答∨ |
關(guān)于LM3S8962的中斷和中斷優(yōu)先級(jí) 昨晚結(jié)合《Cortex-M3權(quán)威指南》和《Cortex-M3技術(shù)參考手冊(cè)》,看了一下有關(guān)中斷的問題,現(xiàn)小結(jié)一下: LM3S8962一共有3+7+36個(gè)中斷。 3是三個(gè)固定優(yōu)先級(jí)的系統(tǒng)異常,Reset,NMI, ...… 查看全部問答∨ |
公司版STM32工作原理 晶振:老板,帶兩個(gè)秘書(電容),有時(shí)老板不在秘書說了算(內(nèi)部時(shí)鐘模式) 時(shí)鐘PLL:老板娘,老板控制局面,但還是要聽老板娘的話。 CPU:人力資源部,調(diào)動(dòng)人員齊心合力 APB1,APB2時(shí)鐘:部門經(jīng)理,發(fā)布任務(wù)進(jìn)度, ...… 查看全部問答∨ |
zigbee NV-restore編譯選項(xiàng)不給力。。。。 大家好,我的是2530,但是加上nv_restore后,協(xié)調(diào)器和路由就不能正常的通信了,具體情況很詭秘: 正常的情況是路由器一直在循環(huán)不斷的想?yún)f(xié)調(diào)器發(fā)送信息。可是現(xiàn)在的情況是:只有當(dāng)我復(fù)位路由器的時(shí)候,才向 ...… 查看全部問答∨ |
|
最近做PRJ,初學(xué)DSP,想先寫個(gè)簡(jiǎn)單的程序試試編譯都沒問題。各個(gè).obj文件都生成了就剩下最后一個(gè)error——————————error: symbol referencing errors - \'./Debug/PWM_EX.out\' not built想了想問題可能是出在cmd文件上,但是看過去看 ...… 查看全部問答∨ |
LED應(yīng)用——內(nèi)部補(bǔ)償補(bǔ)償功能的 DC-DC 轉(zhuǎn)換器 本帖最后由 dontium 于 2015-1-23 13:10 編輯 優(yōu)化具有內(nèi)部補(bǔ)償功能的 DC-DC 轉(zhuǎn)換器的瞬態(tài)響應(yīng) 補(bǔ)償和測(cè)量為高功率 LED 供電的 DC-DC 轉(zhuǎn)換器環(huán)路 使用離散 DC/DC 轉(zhuǎn)換器和 LDO 的電源解決方案 精彩全文,請(qǐng)速速下載 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 什么是PID算法?一文帶你深度理解PID算法
- 控制無刷直流電動(dòng)機(jī)以應(yīng)對(duì)新挑戰(zhàn)
- 汽車加熱器的工作原理和功能
- 限位開關(guān)的工作原理是什么?如何判斷限位開關(guān)的正負(fù)極
- 什么是限位開關(guān)?限位開關(guān)有哪些實(shí)際應(yīng)用
- 中國(guó)超導(dǎo)量子計(jì)算機(jī)“本源悟空”已在多項(xiàng)生物醫(yī)藥領(lǐng)域應(yīng)用
- 限位開關(guān)如何接線?如何判斷限位開關(guān)的好壞
- 拆解7kW的家用汽車充電樁:工程設(shè)計(jì)很復(fù)雜
- 具身智能,融資太瘋狂了
- 攜全系列駕駛助力方案首秀上海車展,Mobileye以人工智能創(chuàng)新推動(dòng)輔助駕駛平權(quán)
- 報(bào)名觀看TI嵌入式主題月直播,場(chǎng)場(chǎng)精彩,好運(yùn)連連
- 免費(fèi)申請(qǐng)?jiān)囉脇福祿克Norma6000功率分析儀
- 【EEWORLD第二十六屆】2011年05月社區(qū)明星人物揭曉!
- 3月21日有獎(jiǎng)直播:ADI新一代高阻抗輸入SAR ADC的優(yōu)勢(shì)與應(yīng)用
- 最能打的國(guó)產(chǎn)芯們
- Maxim 利用nanoPower創(chuàng)新技術(shù),致力于降低系統(tǒng)的靜態(tài)功耗 看視頻答題贏好禮! 還有免費(fèi)開發(fā)板等你拿
- 第三代半導(dǎo)體如何測(cè)試 進(jìn)階技能備好了!收集能量抽好禮!
- 有獎(jiǎng)直播報(bào)名|羅姆EcoGaN™與LSI 技術(shù)
- 瑞薩電子顛覆傳統(tǒng)理念的嵌入式開發(fā)平臺(tái) Renesas Synergy™ 評(píng)估套件震撼來襲!答題即可免費(fèi)申請(qǐng)!
- 有獎(jiǎng)直播預(yù)報(bào)名|TI 新一代Sitara™ AM62處理器革新人機(jī)交互——加速邊緣AI的開發(fā)
- 聞泰科技114億元中標(biāo),成安世半導(dǎo)體第一大股東
- 兆易創(chuàng)新攜GD32 MCU包攬2018年“中國(guó)IC設(shè)計(jì)成就獎(jiǎng)”多項(xiàng)大獎(jiǎng)
- 海格通信:公司的芯片業(yè)務(wù)完全自主研發(fā)
- 上海貝嶺:ADC芯片產(chǎn)品已實(shí)現(xiàn)小批量銷售
- 首款國(guó)產(chǎn)太赫茲成像芯片發(fā)布僅一枚米粒大小
- LG Wing雙屏旋轉(zhuǎn)手機(jī)高清渲染圖解密:怎樣自拍成疑
- 三星Galaxy Z Fold2 5G中國(guó)發(fā)布 第三代折疊機(jī)16999元起
- realme Watch S Pro入網(wǎng) 外觀規(guī)格曝光 或?qū)l(fā)布
- Surface之父:為何微軟手機(jī)選擇安卓而不是Windows?
- 韓媒稱三星顯示器部門和LGD將停止給華為供應(yīng)面板