1. 程式人生 > >qemu-uboot-mini2440 支援 256M 大容量NAND FLASH 的解決方法

qemu-uboot-mini2440 支援 256M 大容量NAND FLASH 的解決方法

最近,又研究了一下qemu-uboot-kernel這套程式碼,發現了只需要修改兩個地方就可以使qemu支援256M以及以上容量的NAND FLASH, 

一、

# vim qemu_src/hw/mini2440.c

找到下面這第372行程式碼:

    /* Check the boot mode */
    switch (mini->boot_mode) {
        case BOOT_NAND:
            sram_base = S3C_SRAM_BASE_NANDBOOT;
            int size = bdrv_getlength(drives_table[nand_idx].bdrv);

            switch (size) {
                case 2 * 65536 * (512 + 16):
                    nand_cid = 0x76;
                    break;
                case 4 * 65536 * (512 + 16):
                    nand_cid = 0xf1;
                    break;
                default:
                    printf("%s: Unknown NAND size/id %d (%dMB) defaulting to old 64MB\n",

                            __func__, size, ((size / (512 + 16)) * 512) / 1024 / 1024);
                    break;
            }
            break;

在default: 語句上方加入下面這三行:

        case 8 * 65536 * (512 + 16):
                    nand_cid = 0xda;                       // 256MB flash == 0xda
                    break;


如果要支援比如 512M 容量的 NAND FLASH , 那麼可以模仿上面的程式碼,跟著加入下面三行:

        case 16 * 65536 * (512 + 16):
                    nand_cid = 0xdc;                       // 512MB flash == 0xdc
                    break;

至於裡面為什麼是 512 +16 ,可以看看這個網頁:http://bbs.eeworld.com.cn/thread-305322-1-1.html

至於 0xda 是什麼東西,可以看看 qemu_src/nand.c 中下面這些內容:
/* Information based on Linux drivers/mtd/nand/nand_ids.c */
static const struct {
    int size;
    int width;
    int page_shift;
    int erase_shift;
    uint32_t options;
} nand_flash_ids[0x100] = {
................................
    [0x76] = { 64, 8, 9, 5, 0 },
................................
  /*
     * These are the new chips with large page size. The pagesize and the
     * erasesize is determined from the extended id bytes
     */
# define LP_OPTIONS    (NAND_SAMSUNG_LP | NAND_NO_READRDY | NAND_NO_AUTOINCR)
# define LP_OPTIONS16    (LP_OPTIONS | NAND_BUSWIDTH_16)
......................................................................
  /* 1 Gigabit */        [0xa1] = { 128, 8, 0, 0, LP_OPTIONS },        [0xf1] = { 128, 8, 0, 0, LP_OPTIONS },       [0xb1] = { 128, 16, 0, 0, LP_OPTIONS16 },       [0xc1] = { 128, 16, 0, 0, LP_OPTIONS16 },
    /* 2 Gigabit */
    [0xaa] = { 256,    8,    0, 0, LP_OPTIONS },
    [0xda] = { 256,    8,    0, 0, LP_OPTIONS },
................................................................

二、
還要修改一個檔案,那就是 

vim qemu_src/mini2440/mini2440_start.sh 

修改為以下內容:
echo Starting in $base
#name_nand="$base/mini2440_nand64.bin"
#name_nand="$base/mini2440_nand128.bin"
name_nand="$base/mini2440_nand256.bin"
if [ ! -f "$name_nand" ];then
 echo $0 : creating NAND empty image : "$name_nand"
# dd if=/dev/zero of="$name_nand" bs=528 count=131072
# dd if=/dev/zero of="$name_nand" bs=2112 count=65536 
dd if=/dev/zero of="$name_nand" bs=135168 count=2048

..........................................................
至於為什麼bs 和 count 要取那些值,可以看看這個 http://blog.163.com/[email protected]/blog/static/128274196201008101048689/

三、修改完上述兩個檔案,然後,再重新把 qemu 編譯一遍,就可以使用命令  sudo sh mini2440/mini2440_start.sh  來重新啟動 qemu-uboot-mini2440了

相關推薦

qemu-uboot-mini2440 支援 256M 容量NAND FLASH解決方法

最近,又研究了一下qemu-uboot-kernel這套程式碼,發現了只需要修改兩個地方就可以使qemu支援256M以及以上容量的NAND FLASH, 一、# vim qemu_src/hw/mini2440.c找到下面這第372行程式碼:    /* Check the boot mode */    

自己寫bootloader——mini2440(四、初始化NAND FLASH)

nbsp AI fadd lec 內存 hcl orf ready 自己 參考資料:https://blog.csdn.net/qqliyunpeng/article/details/51180276 程序框架 /*定義寄存器*/ #define NFCONF (*(

uboot.2015.07移植之從NAND Flash啟動(5)

移植u-boot-2015.07之修改程式支援NAND Flash 1.為什麼要支援NAND Flash啟動 由於NAND Flash 的儲存空間大並且價格便宜(相對於 NOR Flash 來說),所以程式的儲存位置一般會放在 NAND FLash 裡面

開源軟體5常見問題及解決方法

導讀 開原始碼的使用熱度持續上升,各類公司都習慣於使用開原始碼來構建自己的系統和平臺。開原始碼帶來的便利是大家有目共睹的,但巨大利益的背後往往存在著挑戰,開源在方便大家的同時,其隱患也不容忽視。 近幾年,開原始碼的使用熱度持續上升,各類公司都習慣於使用開原始

遠端桌面超出最連線數的解決方法/實現多使用者遠端桌面

遠端桌面超出最大連線數的解決方法/2003 解決方法1】 1、找到一臺能連上網路的windows2003的機器 2、開始–執行–輸入“tsmmc.msc”,跳出一個遠端桌面控制檯 3、右鍵點選左邊的“遠端桌面”,選擇“新建遠端桌面”,按照要求填寫要連線的虛擬主機

Linux系統運維中的十經典問題及其解決方法

今天在網上看到一些Linux系統維護過程中比較常見且經典的問題及其解決方法,在這裡彙總給大家。 1. 執行shell指令碼報錯”bad interpreter: No such file or directory” 問題:某天研發某同事找我說幫他看看他寫的shell指令碼,死活不執行,報錯。我看了下

keras資料量訓練解決方法

當資料量很大時無法將資料全部讀入記憶體運算,報錯,可以改用批處理解決問題。 一.pandas讀資料時可以設定成批量讀入 二.使用keras中的train_on_batch方法 示例程式碼: reader = pd.read_table('tmp.sv', sep=',', chunk

Nginx出現413 Request Entity Too Large錯誤解決方法,phpmyadmin匯入mysql資料庫提示,您想上傳更的檔案/您可能想上傳更的檔案的解決方法

Nginx出現413 Request Entity Too Large錯誤解決方法Nginx出現的413 Request Entity Too Large錯誤,這個錯誤一般在上傳檔案的時候出現解決方法:開啟nginx主配置檔案nginx.conf,一般在/usr/local/

使用JLink間接燒寫S3C2410、S3C2440開發板Nor、Nand Flash方法

1. 簡要說明 JLink的除錯功能、燒寫Flash的功能都很強大,但是對於S3C2410、S3C2440的Flash操作有些麻煩:燒寫Nor Flash時需要設定SDRAM,否則速率很慢;燒寫Nand Flash只是從理論上能夠達到,但是還沒有人直接實現這點。 本文使用一個間接的方法來實現對S3C2410、

windows環境下python CGI上傳檔案錯誤的解決方法

在測試檔案傳輸時,自編寫指令碼在windows環境下遇到無法正確儲存檔案的問題,經過排查研究後,發現是由於python標準輸入流是以文字的方式開啟的,對換行符作了處理,需要將其設定成二進位制方可解決,新增程式碼如下即可:  import cgi, os import c

高併發,流量處理及解決方法

第一:確認伺服器硬體是否足夠支援當前的流量。 普通的P4伺服器一般最多能支援每天10萬獨立IP,如果訪問量比這個還要大,那麼必須首先配置一臺更高效能的專用伺服器才能解決問題,否則怎麼優化都不可能徹底解決效能問題。 第二:優化資料庫訪問  前臺實現完全的靜態化當然最好,可以完全

VS2010工程佔用空間過的原因和解決方法

如果不進行特定的設定,用VS2010建立的工程佔用磁碟空間會非常的大,原因是VS2010會自動生成.ipch和.sdf檔案,用於記錄整個開發過程中的變化,這些東西在99.9999%的情況下是完全用不到的,要解決佔用空間大的問題,有兩種方法: (1)臨時性方法:每次複製VS2

u盤製作啟動盤後空間容量變小解決方法

u盤做了啟動盤後,空間看不到了。原16G僅剩200M,正準備重新買一隻,從jd上搜對應型號,發現不便宜。估摸應該不是N年前華強北買的水貨,於是乎就搜到了下面的解決方案,的確有效。 以下內容摘自網路: 問題:大家有可能使用U盤來製作啟動盤的需要,但是使用過來發現U盤的空間容量

xp印表機共享超過最連線數的解決方法

1.使用以下命令將列印後空閒下來的連線自動斷開。建議可以設定為5分鐘 net config server /autodisconnect:自動斷開連線前的時間 2.建立一個批處理檔案,內容如下。然後將這個批處理檔案設定一個計劃任務。設定每天每隔10分鐘執行一次,這樣

遠端桌面超出最連線數的解決方法

故 障詳情:用遠端桌面連結登入到終端伺服器時經常會遇到“終端伺服器超出最大允許連結數”。    諸如此類錯誤導致無法正常登入終端伺服器,引起該問題的 原因在於終端服務的預設連結數為2個連結,並且當登入遠端桌面後如果不是採用登出方式退出,而是直接關閉遠端桌面視窗,那麼實際上會話並沒有釋放掉,而是 繼續保留在

Navicat匯入mysql資料時出錯解決方法

Navicat 自己到處的資料,匯入時出現無法匯入的情況。 最後選擇利用MySQL命令匯入方式完成資料匯入 用到命令 use  快捷方式   \u      source 快捷方式   \. 快捷方式可以通過help查詢 mysql>\u dataname mysql

總結專案中不支援emoji表情的問題的解決方法

最近財神圈專案整合微信登入功能的過程中,當儲存使用者有暱稱含有表情符號時後臺服務丟擲異常,原來是資料庫預設字符集不支援emoji表情字元。找到問題的原因後,因為之前也沒有遇到過這樣的問題,也沒思路,迅速百度大神找了一大堆資料來,原來僅只要將資料庫及相關的表和表字段設定為ut

MySQL報已達到最連線數的解決方法CMD命令設定

以管理員的身份開啟CMD,CMD的操作命令在這裡就不多說了,不會請自行百度。。。 解決方法: 1.找到MySQL的安裝路徑。【如:C:\Program Files\MySQL\MySQL5.5\】 2.進入bin目錄【如:C:\Program Files\

資料庫資料訪問的解決方法

隨著網際網路應用的廣泛普及,海量資料的儲存和訪問成為了系統設計的瓶頸問題。對於一個大型的網際網路應用,每天百萬級甚至上億的PV無疑對資料庫造成了相當高的負載。對於系統的穩定性和擴充套件性造成了極大的問題。 一、那麼資料庫如何處理海量資料呢? 1、編寫優良的程式程式碼 處理資料離不開優秀的程式程

IIS不支援含中文漢字的url解決方法

三種方法: 1.修改伺服器登錄檔: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/INETINFO/PARAMETERS/FAVORDBCS 把1改成0, 之後重新啟動IIS伺服器。2、在客戶端修改IE設定 把“總是