ppcboot新增nandflash支援

2021-04-16 11:42:04 字數 3460 閱讀 2484

從uboot中 copy -rf 以下目錄或檔案至ppcboot相應目錄

drivers/nand

include/linux/mtd

include/nand.h

include/a**-arm/io.h

在 include/cmd_confdefs.h 中新增

#define min(x, y)    /()

#define max(x, y)    /

()#define cfg_cmd_nand 0x0000100000000000 /* nand support*/

在 include/comfigs/**dk2410.h 中新增

#define cfg_nand_base 0x4e00000c

#define cfg_max_nand_device 1

還有一些修改就等著編譯出錯了再修改就是了

主要的工作就是新增命令和對驅動的修改

暫時新增乙個簡單的命令,nandinit來初始化nandflash

在 include 下新增 cmd_nand.h

#ifndef _cmd_nand_h

#define _cmd_nand_h

#if (config_commands & cfg_cmd_nand)

#define cmd_tbl_nandinit mk_cmd_tbl_entry(     /

"nandinit", 5, 1, 1, do_nandinit,   /

"nandinit  - init nand flash/n",    /

"/n  nandinit  - init nand flash/n"  /

),int do_nandinit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv);

#else

#define cmd_tbl_nandinit

#endif /* cfg_cmd_nand */

#endif /* _cmd_nand_h */

然後再 common 中新增相應的 cmd_nand.c檔案,來實現這個命令

#include

#include

extern void nand_init(void);

#if (config_commands & cfg_cmd_nand)

int do_nandinit ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv)

#endif /* cfg_cmd_flash */

修改下makefile,並在 common/command.c 中新增

#include

在 cmd_tbl 命令巨集陣列中加入 cmd_tbl_nandinit,使得run_command能找到命令

來自uboot的nandflash的驅動基本就是2.6核心中的驅動

我們只需要實現幾個更底層的介面函式,而且ppcboot中沒有用到

mmu,這樣直接對nandflash控制器的暫存器進行操作.

原本需要把這些函式放在 board/**dk2410 目錄中,不過為了方便一點就直接修改驅動

的nand.c檔案,以下是**.

#include

#include

#if (config_commands & cfg_cmd_nand) && !defined(cfg_nand_legacy)

#include

#ifndef cfg_nand_base_list

#define cfg_nand_base_list

#endif

#define s3c2410_nfreg(x) (x+0x4e000000)

#define s3c2410_nfconf  s3c2410_nfreg(0x00)

#define s3c2410_nfcmd   s3c2410_nfreg(0x04)

#define s3c2410_nfaddr  s3c2410_nfreg(0x08)

#define s3c2410_nfdata  s3c2410_nfreg(0x0c)

#define s3c2410_nfstat  s3c2410_nfreg(0x10)

#define s3c2410_nfecc   s3c2410_nfreg(0x14)

#define s3c2410_nfconf_en          (1<<15)

#define s3c2410_nfconf_512byte     (1<<14)

#define s3c2410_nfconf_4step       (1<<13)

#define s3c2410_nfconf_initecc     (1<<12)

#define s3c2410_nfconf_nfce        (1<<11)

#define s3c2410_nfconf_tacls(x)    ((x)<<8)

#define s3c2410_nfconf_twrph0(x)   ((x)<<4)

#define s3c2410_nfconf_twrph1(x)   ((x)<<0)

#define s3c2410_nfstat_busy        (1<<0)

void s3c2410_nand_inithw(void)

static void s3c2410_nand_hwcontrol(struct mtd_info *mtd, int cmd)}

static int s3c2410_nand_devready(struct mtd_info *mtd)

void board_nand_init(struct nand_chip *nand)

int nand_curr_device = -1;

nand_info_t nand_info[cfg_max_nand_device];

static struct nand_chip nand_chip[cfg_max_nand_device];

static ulong base_address[cfg_max_nand_device] = cfg_nand_base_list;

static const char default_nand_name = "nand";

static void nand_init_chip(struct mtd_info *mtd, struct nand_chip *nand,

ulong base_addr)

else

mtd->name = null; }

void nand_init(void)

printf("nand flash %dm/n", size / (1024 * 1024));}

#endif

很容易就能讀懂了,以後就可以在這基礎上再加入燒寫nandflash的命令

還可以加入啟動wince的命令,來實現linux和wince的雙系統.

mysql新增事務 mysql 新增新增事務處理

開始首先說明一下,mysql資料庫預設的資料庫引擎是myisam,是不支援事務的,單數如果你新增了資料執行語句是不會出錯的,單數不管用,即便是回滾事務,記錄也是插入進去了,所有首先我們要做的第一步是更改資料庫引擎語句如下 alter table tablenameengine innodb 用到的表...

mysql新增事務 mysql 新增新增事務處理

開始首先說明一下,mysql資料庫預設的資料庫引擎是myisam,是不支援事務的,單數如果你新增了資料執行語句是不會出錯的,單數不管用,即便是回滾事務,記錄也是插入進去了,所有首先我們要做的第一步是更改資料庫引擎語句如下 alter table tablename engine innodb 用到的...

動態新增方法,新增協議

void newmethod id self,sel cmd,nsstring str cls 被新增方法的類 name 可以理解為方法名,貌似隨便起名,比如我們這裡叫newmethod2222 imp 實現這個方法的函式 type 具體還太熟悉,type應該是被削弱了,返回值不准也可以正常執行,v...