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

歷史上的今天

今天是:2024年08月30日(星期五)

正在發(fā)生

2021年08月30日 | linux-2.6.38到tiny6410的移植手冊(cè)(連載1)__nand flash

發(fā)布者:春林初盛 來源: eefocus關(guān)鍵字:linux-2  6  tiny6410  移植  nand  flash 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

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就可以用了。

[1] [1]
關(guān)鍵字:linux-2  6  tiny6410  移植  nand  flash 引用地址:linux-2.6.38到tiny6410的移植手冊(cè)(連載1)__nand flash

上一篇:linux-2.6.38到tiny6410的移植手冊(cè)(連載3)__ LCD&觸摸屏
下一篇:linux-2.6.38到tiny6410的移植手冊(cè)(連載2)__網(wǎng)卡&NFS

推薦閱讀

據(jù)國(guó)外媒體報(bào)道,蘋果CEO庫(kù)克上周獲得56萬股可行權(quán)受限股份獎(jiǎng)勵(lì),這些股份分為期限型和績(jī)效型兩類。本周一,庫(kù)克拋售了其中部分受限股份,套現(xiàn)近5800萬美元。據(jù)提交給SEC的文件顯示,鑒于庫(kù)克完成了蘋果董事會(huì)設(shè)定的業(yè)績(jī)目標(biāo),庫(kù)克上周五被授予56萬股受限股股份。截至本周二股市收盤,這些股票價(jià)值約為1.23億美元。蘋果上周五扣留了29.4840萬股,相當(dāng)于這...
USB接口也是經(jīng)常用到的,這一篇還是從它的基礎(chǔ)知識(shí)講起。一、USB介紹通用串行總線(英語:Universal Serial Bus,縮寫:USB)是連接計(jì)算機(jī)系統(tǒng)與外部設(shè)備的一種串口總線標(biāo)準(zhǔn),也是一種輸入輸出接口的技術(shù)規(guī)范,被廣泛地應(yīng)用于個(gè)人電腦和移動(dòng)設(shè)備等信息通訊產(chǎn)品,并擴(kuò)展至攝影器材、數(shù)字電視(機(jī)頂盒)、游戲機(jī)等其它相關(guān)領(lǐng)域。最新一代是USB 3.1,傳輸...
一項(xiàng)新的研究表明,在流行的約會(huì)應(yīng)用上,iPhone 用戶比 Android 用戶更容易獲得匹配-如果使用黑莓手機(jī),您幾乎沒有約會(huì)成功的希望。根據(jù)這項(xiàng)研究顯示,在約會(huì)資料中擁有蘋果設(shè)備,例如 iPhone,Apple Watch 和 AirPods 的擁有者「比其他設(shè)備的用戶或沒有顯示設(shè)備的用戶」吸引力更高。由 CompareMyMobile 進(jìn)行的這項(xiàng)研究對(duì)流行的約會(huì)應(yīng)用上的 50...
對(duì)于ZDS2022示波器七個(gè)一鍵操作中的“一鍵清除”,它在不同的操作模式下有不同的效果,下面我們把這些效果一一列舉:在無限余輝模式下,系統(tǒng)處于【運(yùn)行】狀態(tài)時(shí),按下一鍵清除【Clear】按鍵,屏幕上的波形余輝會(huì)被擦除,而新采集的波形不會(huì)被擦除。當(dāng)系統(tǒng)處于【停止】狀態(tài)時(shí),按下一鍵清除【Clear】按鍵,屏幕上所有波形都會(huì)被清除。在ZDS2022示波器強(qiáng)大的...

史海拾趣

問答坊 | AI 解惑

合同問題

勞動(dòng)合同上寫的工資和公司面試談好工資不一樣, 面試談好的工資是勞動(dòng)合同的2倍多。 上個(gè)月,實(shí)際發(fā)放的工資按談好工資發(fā)的。 人事解釋說,合同上只是基本工資, 公司是否存在偷稅漏稅的行為還是在找機(jī)會(huì)制裁員工? 因?yàn)闆]有工資條,作為員工 ...…

查看全部問答∨

基于LabVIEW力與變形信號(hào)數(shù)據(jù)自動(dòng)采集與檢測(cè)

基于LabVIEW力與變形信號(hào)數(shù)據(jù)自動(dòng)采集與檢測(cè)…

查看全部問答∨

請(qǐng)教cos操作系統(tǒng)高手!

本人現(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, ...…

查看全部問答∨

(轉(zhuǎn))公司版STM32工作原理

公司版STM32工作原理 晶振:老板,帶兩個(gè)秘書(電容),有時(shí)老板不在秘書說了算(內(nèi)部時(shí)鐘模式) 時(shí)鐘PLL:老板娘,老板控制局面,但還是要聽老板娘的話。 CPU:人力資源部,調(diào)動(dòng)人員齊心合力 APB1,APB2時(shí)鐘:部門經(jīng)理,發(fā)布任務(wù)進(jìn)度, ...…

查看全部問答∨

關(guān)于fpga浮點(diǎn)數(shù)的東東

大神門透露一下,怎么用fpga表示浮點(diǎn)數(shù)?…

查看全部問答∨

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í)候,才向 ...…

查看全部問答∨

CCS|編譯沒問題就是.out文件出不來|求大神

最近做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ā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 萨迦县| 通州区| 汶川县| 纳雍县| 韶山市| 吉木萨尔县| 运城市| 仪征市| 泉州市| 尖扎县| 烟台市| 布尔津县| 云阳县| 栾城县| 翼城县| 繁昌县| 英吉沙县| 思茅市| 任丘市| 兴安县| 石渠县| 洪雅县| 达日县| 吉木萨尔县| 汉沽区| 神农架林区| 花垣县| 达尔| 五常市| 北流市| 绩溪县| 那坡县| 都兰县| 洛南县| 浑源县| 东阳市| 绥宁县| 黎川县| 永兴县| 江安县| 宜都市|