從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...