写在前面:

我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看。

此外目前我在gitHub上准备一些李航的《统计学习方法》的实现算法,目标将书内算法全部手打实现,欢迎参观并打星。GitHib传送门

正文

到这里uboot差不多已经结束了,再完成最后一步,就能启动内核啦。

一. 首先先解决启动时的一个警告,这个和裁剪无关,只是先把警告消除掉

*** Warning - bad CRC, using default environment

这句话意思就是环境没有配置,搜索这句话是哪里打出来的
a.在env_common.c文件内的下面这个函数

void set_default_env(const char *s)
{if (sizeof(default_environment) > ENV_SIZE) {puts("*** Error - default environment is too large\n\n");return;}if (s) {if (*s == '!') {printf("*** Warning - %s, ""using default environment\n\n",s + 1);} else {puts(s);}} else {puts("Using default environment\n\n");}if (himport_r(&env_htab, (char *)default_environment,sizeof(default_environment), '\0', 0) == 0)error("Environment import failed: errno = %d\n", errno);gd->flags |= GD_FLG_ENV_READY;
}

进入default_environment结构体看看

const uchar default_environment[] = {
#ifdef  CONFIG_BOOTARGS"bootargs="   CONFIG_BOOTARGS         "\0"
#endif
#ifdef  CONFIG_BOOTCOMMAND"bootcmd=" CONFIG_BOOTCOMMAND      "\0"
#endif
#ifdef  CONFIG_RAMBOOTCOMMAND"ramboot="  CONFIG_RAMBOOTCOMMAND       "\0"
#endif
#ifdef  CONFIG_NFSBOOTCOMMAND"nfsboot="  CONFIG_NFSBOOTCOMMAND       "\0"
#endif
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)"bootdelay=" MK_STR(CONFIG_BOOTDELAY)    "\0"
#endif
#if defined(CONFIG_BAUDRATE) && (CONFIG_BAUDRATE >= 0)"baudrate="    MK_STR(CONFIG_BAUDRATE)     "\0"
#endif
#ifdef  CONFIG_LOADS_ECHO"loads_echo="   MK_STR(CONFIG_LOADS_ECHO)   "\0"
#endif
#ifdef  CONFIG_ETHADDR"ethaddr=" MK_STR(CONFIG_ETHADDR)      "\0"
#endif
#ifdef  CONFIG_ETH1ADDR"eth1addr="   MK_STR(CONFIG_ETH1ADDR)     "\0"
#endif
#ifdef  CONFIG_ETH2ADDR"eth2addr="   MK_STR(CONFIG_ETH2ADDR)     "\0"
#endif
#ifdef  CONFIG_ETH3ADDR"eth3addr="   MK_STR(CONFIG_ETH3ADDR)     "\0"
#endif
#ifdef  CONFIG_ETH4ADDR"eth4addr="   MK_STR(CONFIG_ETH4ADDR)     "\0"
#endif
#ifdef  CONFIG_ETH5ADDR"eth5addr="   MK_STR(CONFIG_ETH5ADDR)     "\0"
#endif
#ifdef  CONFIG_IPADDR"ipaddr="   MK_STR(CONFIG_IPADDR)       "\0"
#endif
#ifdef  CONFIG_SERVERIP"serverip="   MK_STR(CONFIG_SERVERIP)     "\0"
#endif
#ifdef  CONFIG_SYS_AUTOLOAD"autoload="   CONFIG_SYS_AUTOLOAD     "\0"
#endif
#ifdef  CONFIG_PREBOOT"preboot=" CONFIG_PREBOOT          "\0"
#endif
#ifdef  CONFIG_ROOTPATH"rootpath="   CONFIG_ROOTPATH         "\0"
#endif
#ifdef  CONFIG_GATEWAYIP"gatewayip=" MK_STR(CONFIG_GATEWAYIP)    "\0"
#endif
#ifdef  CONFIG_NETMASK"netmask=" MK_STR(CONFIG_NETMASK)      "\0"
#endif
#ifdef  CONFIG_HOSTNAME"hostname="   MK_STR(CONFIG_HOSTNAME)     "\0"
#endif
#ifdef  CONFIG_BOOTFILE"bootfile="   CONFIG_BOOTFILE         "\0"
#endif
#ifdef  CONFIG_LOADADDR"loadaddr="   MK_STR(CONFIG_LOADADDR)     "\0"
#endif
#ifdef  CONFIG_CLOCKS_IN_MHZ"clocks_in_mhz=1\0"
#endif
#if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0)"pcidelay="    MK_STR(CONFIG_PCI_BOOTDELAY)    "\0"
#endif
#ifdef  CONFIG_EXTRA_ENV_SETTINGSCONFIG_EXTRA_ENV_SETTINGS
#endif"\0"
};

看到那么多宏定义,头都有点大了。
一个一个往下看,不用全部都看,平时用到的参数看一看,首先是

CONFIG_BOOTDELAY

这个是boot启动的时候那个倒计时,默认是5秒,我们可以改成3秒,也可以不改

#define CONFIG_BOOTDELAY 3   /* autoboot after 3 seconds */

然后是ip设置

"ipaddr=" MK_STR(CONFIG_IPADDR)

将宏修改成如下,可以随便设,只要和网内其他IP不冲突就行了

#define CONFIG_IPADDR        192.168.1.120

连带的一些都直接写出来吧,就不一个个说了,这些都挨个设置好

#define CONFIG_NETMASK       255.255.255.0
#define CONFIG_IPADDR       192.168.1.120
#define CONFIG_SERVERIP     192.168.1.101
#define CONFIG_ETHADDR      00:0c:29:d3:fe:1d

b. 设置环境变量,之前boot里面设置参数的时候,set之后是不能save的,因为没有设置保存地址,所以这里修改保存地址

原先的值:

#define CONFIG_ENV_ADDR          (CONFIG_SYS_FLASH_BASE + 0x070000)     /*  */
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_SIZE         0x10000
/* allow to overwrite serial and ethaddr */
#define CONFIG_ENV_OVERWRITE

修改后的代码

#if 0
#define CONFIG_ENV_ADDR         (CONFIG_SYS_FLASH_BASE + 0x070000)     /*  */
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_SIZE         0x10000
/* allow to overwrite serial and ethaddr */
#define CONFIG_ENV_OVERWRITE
#else
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET       0x00040000      /* 环境变量保存在40000这个地址 */
#define CONFIG_ENV_SIZE     0x0002000           /* 保存区的长度 */
#define CONFIG_ENV_RANGE        CONFIG_ENV_SIZE     /* 擦除的长度 */
#endif

二. 裁剪内核
进入smdk2440.h,把不需要的功能的宏定义都注释掉或者去掉
a. USB用不着

/************************************************************* USB support (currently only works with D-cache off)************************************************************/
//#define CONFIG_USB_OHCI
//#define CONFIG_USB_KEYBOARD
//#define CONFIG_USB_STORAGE
//#define CONFIG_DOS_PARTITION

b. RTC时钟不需要

/************************************************************* RTC************************************************************/
//#define CONFIG_RTC_S3C24X0c.BOOTP
/** BOOTP    看不懂,我就全去掉了*/
//#define CONFIG_BOOTP_BOOTFILESIZE
//#define CONFIG_BOOTP_BOOTPATH
//#define CONFIG_BOOTP_GATEWAY
//#define CONFIG_BOOTP_HOSTNAME

d. 看不懂,去掉一些不眼熟的

/** Command line configuration.*/
#include <config_cmd_default.h>#define CONFIG_CMD_BSP
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_DATE
//#define CONFIG_CMD_DHCP   /* 动态获得IP地址 */
#define CONFIG_CMD_ELF
#define CONFIG_CMD_NAND
#define CONFIG_CMD_PING
#define CONFIG_CMD_REGINFO
//#define CONFIG_CMD_USB

e.文件系统,只要能烧写映像文件就行,用不着文件系统

/** File system      文件系统*/
//#define CONFIG_CMD_FAT
//#define CONFIG_CMD_EXT2
//#define CONFIG_CMD_UBI
//#define CONFIG_CMD_UBIFS
//#define CONFIG_CMD_MTDPARTS
//#define CONFIG_MTD_DEVICE
//#define CONFIG_MTD_PARTITIONS
//#define CONFIG_YAFFS2
//#define CONFIG_RBTREE

编译。果然出现了一堆错误

/work/system/u-boot-2012.04.01/common/cmd_date.c:60: undefined reference to `rtc_reset'
/work/system/u-boot-2012.04.01/common/cmd_date.c:63: undefined reference to `rtc_get'
/work/system/u-boot-2012.04.01/common/cmd_date.c:72: undefined reference to `rtc_set'
/work/system/u-boot-2012.04.01/common/cmd_date.c:81: undefined reference to `rtc_get'
drivers/mtd/ubi/libubi.o: In function `ubi_detach_mtd_dev':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/build.c:925: undefined reference to `put_mtd_device'
drivers/mtd/ubi/libubi.o: In function `open_mtd_device':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/build.c:957: undefined reference to `get_mtd_device_nm'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/build.c:959: undefined reference to `get_mtd_device'
drivers/mtd/ubi/libubi.o: In function `ubi_init':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/build.c:1023: undefined reference to `put_mtd_device'
drivers/mtd/ubi/libubi.o: In function `process_lvol':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/vtbl.c:381: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/vtbl.c:381: undefined reference to `rb_next'
drivers/mtd/ubi/libubi.o: In function `ubi_eba_init_scan':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/eba.c:1193: undefined reference to `rb_first'
drivers/mtd/ubi/libubi.o: In function `ubi_scan_move_to_list':
/work/system/u-boot-2012.04.01/include/../drivers/mtd/ubi/scan.h:146: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `ubi_eba_init_scan':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/eba.c:1193: undefined reference to `rb_next'
drivers/mtd/ubi/libubi.o: In function `leb_write_unlock':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/eba.c:322: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `leb_read_unlock':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/eba.c:238: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `ltree_add_entry':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/eba.c:191: undefined reference to `rb_insert_color'
drivers/mtd/ubi/libubi.o: In function `find_wl_entry':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:419: undefined reference to `rb_first'
drivers/mtd/ubi/libubi.o: In function `ensure_wear_leveling':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:999: undefined reference to `rb_first'
drivers/mtd/ubi/libubi.o: In function `prot_tree_del':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:574: undefined reference to `rb_erase'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:575: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `wl_tree_add':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:241: undefined reference to `rb_insert_color'
drivers/mtd/ubi/libubi.o: In function `ubi_wl_init_scan':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:1515: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:1516: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:1516: undefined reference to `rb_next'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:1515: undefined reference to `rb_next'
drivers/mtd/ubi/libubi.o: In function `check_protection_over':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:665: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:675: undefined reference to `rb_erase'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:676: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `ubi_wl_scrub_peb':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:1266: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `ubi_wl_put_peb':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:1204: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `prot_tree_add':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:389: undefined reference to `rb_insert_color'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:403: undefined reference to `rb_insert_color'
drivers/mtd/ubi/libubi.o: In function `wear_leveling_worker':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:796: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:805: undefined reference to `rb_erase'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:811: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:814: undefined reference to `rb_erase'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:819: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `ubi_wl_get_peb':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:498: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:500: undefined reference to `rb_last'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:518: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/wl.c:533: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `ubi_scan_rm_volume':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:634: undefined reference to `rb_erase'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:632: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:638: undefined reference to `rb_erase'
drivers/mtd/ubi/libubi.o: In function `add_volume':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:219: undefined reference to `rb_insert_color'
drivers/mtd/ubi/libubi.o: In function `ubi_scan_add_used':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:556: undefined reference to `rb_insert_color'
drivers/mtd/ubi/libubi.o: In function `ubi_scan':
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:958: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:959: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:959: undefined reference to `rb_next'
/work/system/u-boot-2012.04.01/drivers/mtd/ubi/scan.c:958: undefined reference to `rb_next'
fs/ext2/libext2fs.o: In function `ext2fs_set_blk_dev':
/work/system/u-boot-2012.04.01/fs/ext2/dev.c:44: undefined reference to `get_partition_info'
fs/fat/libfat.o: In function `file_fat_detectfs':
/work/system/u-boot-2012.04.01/fs/fat/fat.c:1162: undefined reference to `dev_print'
fs/fat/libfat.o: In function `fat_register_device':
/work/system/u-boot-2012.04.01/fs/fat/fat.c:79: undefined reference to `get_partition_info'
fs/ubifs/libubifs.o: In function `insert_old_idx':
/work/system/u-boot-2012.04.01/fs/ubifs/tnc.c:105: undefined reference to `rb_insert_color'
fs/ubifs/libubifs.o: In function `ubifs_add_bud':
/work/system/u-boot-2012.04.01/fs/ubifs/log.c:86: undefined reference to `rb_insert_color'
fs/ubifs/libubifs.o: In function `insert_dead_orphan':
/work/system/u-boot-2012.04.01/fs/ubifs/orphan.c:129: undefined reference to `rb_insert_color'
fs/ubifs/libubifs.o: In function `ubifs_recover_size':
/work/system/u-boot-2012.04.01/fs/ubifs/recovery.c:1171: undefined reference to `rb_first'
/work/system/u-boot-2012.04.01/fs/ubifs/recovery.c:1214: undefined reference to `rb_next'
/work/system/u-boot-2012.04.01/fs/ubifs/recovery.c:1220: undefined reference to `rb_next'
/work/system/u-boot-2012.04.01/fs/ubifs/recovery.c:1221: undefined reference to `rb_erase'
fs/ubifs/libubifs.o: In function `add_ino':
/work/system/u-boot-2012.04.01/fs/ubifs/recovery.c:1050: undefined reference to `rb_insert_color'
fs/ubifs/libubifs.o: In function `remove_ino':
/work/system/u-boot-2012.04.01/fs/ubifs/recovery.c:1088: undefined reference to `rb_erase'
fs/ubifs/libubifs.o: In function `insert_node':
/work/system/u-boot-2012.04.01/fs/ubifs/replay.c:373: undefined reference to `rb_insert_color'
fs/ubifs/libubifs.o: In function `insert_dent':
/work/system/u-boot-2012.04.01/fs/ubifs/replay.c:448: undefined reference to `rb_insert_color'
fs/ubifs/libubifs.o: In function `insert_ref_node':
/work/system/u-boot-2012.04.01/fs/ubifs/replay.c:689: undefined reference to `rb_insert_color'
fs/ubifs/libubifs.o: In function `apply_replay_tree':
/work/system/u-boot-2012.04.01/fs/ubifs/replay.c:306: undefined reference to `rb_next'
/work/system/u-boot-2012.04.01/fs/ubifs/replay.c:294: undefined reference to `rb_first'
make: *** [u-boot] Error 1
book@book-desktop:/work/system/u-boot-2012.04.01$

看第一个错误,rtc的cmd_date有问题,把这个的宏也直接注释掉

//#define CONFIG_CMD_DATE

然后看下面的错误,好像都和ubi有关,但是ubi已经去掉了啊,可能没有make clean。
先make clean,然后再重新编译。
果然没有错误了。
看一下bin有多大

ls -l u-boot.bin

返回:

-rwxr-xr-x 1 book book 216844 2016-08-13 23:38 u-boot.bin

两百多k,原先是400多K,的确小了很多。

三. 划分分区
划分区不能随便画,要看一下使用的内核是打算怎么分的,不然两边数据读取的时候都对不上。
tftp下载uImage内核,bootm启动,这个在之前应该写过,内核会在内核中启动,重新上电就没有了,测试的时候很方便,启动内核以后在打出来的数据里查看分区,它是这样写的

0x00000000-0x00040000 : "bootloader"
0x00040000-0x00060000 : "params"
0x00060000-0x00260000 : "kernel"
0x00260000-0x10000000 : "root"

我们boot也照着这个样子分区好了。命令mtdpart是和分区有关的,查找boot里有没有名字是mtdpart的文件,找到cmd_mtdpart,找到里面的初始化函数mtdparts_init,里面太乱了,还是看看别人怎么用好了,搜索这个关键词,随便进入一个文件,看到别人这么写的

#define CONFIG_CMD_MTDPARTS
#define MTDIDS_DEFAULT          "nor0=TQM8xxM-0"     /* 表示哪一个设备 */   #define MTDPARTS_DEFAULT        "mtdparts=TQM8xxM-0:512k(u-boot),"      \"128k(params),"            \"1920k(kernel),"        \"5632(rootfs),"        \"4m(data)"         \

直接复制到2440.h,修改"nor0=TQM8xxM-0"中的nornand“TQM8xxM”改为“jz2440”(两个TQM8xxM都要改为一致,我当时就是只改了一个,报错如下)

invalid mtd device 'TQM8xxM-0'

(u-boot)的大小改为256k,params改为128k,kernel改为2m,rootfs改为“-”,“-”表示剩下的空间,(data)直接删掉,注意rootfs后面的逗号一定要去掉,我之前没去掉,报错

no partitions allowed after a fill-up partition

后来查代码才发现,只要后面有逗号,它就会认为下面还有划分空间,这时候你又已经写了“-”表示这段空间到末尾,所以会报错。
所以整段代码改为

#define CONFIG_CMD_MTDPARTS
#define MTDIDS_DEFAULT          "nand0=jz2440-0"     /* 表示哪一个设备 */   #define MTDPARTS_DEFAULT        "mtdparts=jz2440-0:256k(u-boot),"      \"128k(params),"            \"2m(kernel),"        \"-(rootfs)"         \

最后还要到board.c的

for (;;) {main_loop();}

之前加上一句话

run_command("mtdparts default", 0);

这是命令mtdparts default,就是说每次boot启动以后先分区,因为分区是我们程序软规定的,每次启动都要规定一下。

编译,没有错误,烧写。

四. 测试分区是否好使
a. 输入命令mtd,返回结果:

device nand0 <jz2440-0>, # parts = 4#: name       size        offset      mask_flags0: u-boot              0x00040000 0x00000000  01: params              0x00020000  0x00040000  02: kernel              0x00200000  0x00060000  03: rootfs              0x0fda0000  0x00260000  0

已经分区成功了
b. 使用TFTP下载,把名为uImage的内核下载到30000000的地址

tftp 30000000 uImage

c. 擦除内核要使用的分区

nand erase.part kernel

d. 将内核写入kernel

nand write.part kernel

e. 重启,等待3秒结束后启动内核,
f. 启动成功

移植uboot第八步:裁剪、修改默认参数、分区相关推荐

  1. 移植uboot第三步:修改时钟

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  2. 移植U-BOOT之裁剪和修改默认参数(易用性)启动内核,以及对uboot进行分区

    今天我们来裁剪U-BOOT,使其更加易用,修改默认参数,以及制作最终修改好得补丁文件方便以后的快速移植. 那么如果想看之前的关于网卡以及flash等的移植,请点击链接查看:点击链接查看 在裁剪修改之前 ...

  3. 移植uboot第四步:设置NAND启动

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  4. 移植uboot第六步:支持NANDFlash

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  5. 移植uboot第七步:支持DM9000

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  6. 移植uboot第五步:支持NORFlash

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  7. 移植uboot第十步:制作uboot补丁

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  8. 移植u-boot.2012.04.01

    /*************************************************** *u-boot版本:u-boot2012.04.01 *gcc版本:arm-linux-gcc ...

  9. S3C2440移植uboot之编译烧写uboot

    文章目录 移植环境 获取uboot 更新交叉编译工具 配置环境变量 移植Uboot其他文章链接: S3C2440移植uboot之新建单板_时钟_SDRAM_串口 S3C2440移植uboot之启动过程 ...

最新文章

  1. Mysql 中文乱码问题完美解决方案
  2. Qt 中容器类型的控件
  3. [译]在CUDA C/C++中如何衡量代码性能
  4. 改变单元格内容触发事件(转)
  5. [C/C++] C++声明和定义的区别
  6. 超好看的科学科普书,孩子大人都可以看!
  7. 窗口间的通信(消息互发与数据传递)
  8. sql server 2012序列号密钥sql server 2012序列号sql密钥
  9. 【ADS使用:PA的大信号仿真的基本设置】
  10. 计算机操作系统面试题库和答案
  11. 深蓝英文字幕助手(一款看原声影片和英文字幕学英语的小软件)发布
  12. debug——程序停止正常工作
  13. risc-v 编译 linux,RISCV的linux模拟环境搭建整理和总结
  14. H5+ 常用API(拨打电话,设备震动,屏幕方向,屏幕亮度,设备信息...等)
  15. 写在清明(2007年)
  16. 5G知识之0G-5G的技术发展
  17. Connecting to 192.168.237.129:22... Could not connect to '192.168.237.129' (port 22): Connection fai
  18. 《ANSYS CFX 14.0超级学习手册》——1.4 CFD软件结构及常用的CFD软件
  19. Qt编写可视化大屏电子看板系统27-模块5负荷分布
  20. 小米云服务器安装xp系统6,小米云服务助手XP版

热门文章

  1. 数据库数据满足树结构时,求一个结点的子结点有哪些
  2. 第四十四章 Django ORM
  3. CentOS7和其他版本的虚拟机,防火墙命令等各种相关笔记
  4. AndroidStudio_ListView
  5. TF31003:您的用户帐户没有连接到 Team Foundation Server 的权限
  6. mysql ibatis 分页_MyBatis怎样实现MySQL动态分页?
  7. html5调用手机摄像头,实现拍照上传功能
  8. leetcode算法题--相交链表
  9. leetcode算法题--二叉树的锯齿型层次遍历
  10. 3w最简单led灯电路图_led灯驱动电源电路图大全(六款模拟电路设计原理图详解)...