本帖最后由 dunken 于 2012-11-28 12:59 编辑
1支持NAND 启动 支持内核引导
2.支持jffs2 yaffs 文件系统
3.支持USB
4.快捷菜单
5.支持tftp
6. 支持LCD输出和串口输出切换 快捷菜单中的“T”
7.支持文件系统挂载和内核下载自动引导
9.支持NOR Flash识别,但NOR FLASH启动没添加,NOR我不打算打它的注意,免得出问题。
10.支持xmodem协议
11.支持开机logo
######## ADDED BY DUNKEN,20121120 ########
##### Boot for Nand Flash Main Menu #####
##### USB download mode #####
[1] Download u-boot or other bootloader to Nand Flash
[2] Download Eboot (eboot.nb0) to Nand Flash
[3] Download Linux Kernel (zImage.bin) to Nand Flash
[4] Deleted by dunken!!
[5] Download CRAMFS image to Nand Flash
[6] Download YAFFS image (root.bin) to Nand Flash
[7] Download Program (uCOS-II or TQ2440_Test) to SDRAM and Run it
[8] Deleted by dunken!!
[9] Format the Nand Flash
[0] Set the boot parameters
[a] Download User Program (eg: uCOS-II or TQ2440_Test)
Deleted by dunken!!
[l] Deleted by dunken!!
[n] Enter TFTP download mode menu
[r] Reboot u-boot
[t] Print the information to Serial or VGA
[q] quit from menu
Enter your selection:
串口输出为: U-Boot 1.3.4 (Nov 25 2012 - 01:22:48) DRAM: 64 MB Flash: 2 MB NAND: 256 MiB no Video params found, try video-mode~~ Video: 480x272x16 16kHz 59Hz LCD输出为:
移植过程中,出现一些问题,希望能解答下!
1.UBOOT启动后,在识别NAND时(如下绿色的256MiB ) 显得非常慢,不知道是哪里出了问题!
2.命令tftp必须改成tftpboot才能使用TFTP下载。原来的tftp命令不知道飞哪里去了,原来都可以用tftp 0x30000000 u-boot.bin命令,而现在只能用tftpboot 0x30000000 u-boot.bin下载啦,纠U-Boot 1.3.4 (Nov 20 2012 - 22:42:53)
DRAM: 64 MB Flash: 2 MB NAND: 256 MiB In: serial Out: serial Err: serial USB slave is enable! dm9000 i/o: 0x20000300, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 08:00:3e:26:0a:5b operating at unknown: 0 mode Hit any key to stop autoboot: 0 结了! 3.开机LOGO的高度不能超过屏幕高度的一半,否则会出现“nand”、“tftpboot”和“reset”命令无法解析。我的屏幕是480*272,4.3寸的,LOGO大小是480*X. 3.使用了setenv 设置了环境变量stdout,并保存成功了,还特地查了下,的确保存好了,可是重启后,U-BOOT快捷菜单还是在LCD上显示。 ARM2440 # printenv bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 bootcmd=nand read 0x30000000 0x200000 0x300000; bootm 0x30000000 bootdelay=3 baudrate=115200 ethaddr=08:00:3e:26:0a:5b ipaddr=192.168.1.105 serverip=192.168.1.100 gatewayip=192.168.1.1 netmask=255.255.255.0 LCD参数 video-mode=ctfb:x:480,y:272,depth:16,le:10,ri:19,up:2,lo:2,hs:30,vs:8,pclk:111111 stdin=vga stderr=vga mtdids=nand0=nandflash0 mtdparts=mtdparts=nandflash0:256k(bios),128k(params),128k(toc),512k(eboot),1024k(logo),3m(kernel),-(root) partition=nand0,0 mtddevnum=0 mtddevname=bios stdout=serial 串口输出 Environment size: 568/131068 bytes ARM2440 # saveenv Saving Environment to NAND... Erasing Nand... Erasing at 0x40000 -- 100% complete. Writing to Nand... done ARM2440 # 4.关于宏CONFIG_CONSOLE_EXTRA_INFO [drivers/video/cfb_console.c文件中 ⑴在drivers/video/cfb_console.c文件顶部有它的英文解释如下: CONFIG_CONSOLE_EXTRA_INFO - display additional board information strings that normaly goes to serial port. This define requires a board specific function: video_drawstring (VIDEO_INFO_X, VIDEO_INFO_Y + i*VIDEO_FONT_HEIGHT, info); that fills a info buffer at i=row. s.a: board/eltec/bab7xx. 解释中提到的函数都在文件中,而且都已经定义了,本人英文不好,搞不懂,这个宏到底能达到什么效果,还搞不定。 static inline void video_drawstring (int xx, int yy, unsigned char *s) 第533行 { video_drawchars (xx, yy, s, strlen ((char *)s)); } static void video_drawchars (int xx, int yy, unsigned char *s, int count) 第420行 ⑵这个宏同时打开了同文件下的 void video_get_info_str函数,我查了下U-BOOT中没有,其它类型的CPU倒是有这个函数的定义,但我又不知道参考那个。这个需要自己编写代码,但是它实现什么功能,目前还不是很清楚,无从下手。 #ifdef CONFIG_CONSOLE_EXTRA_INFO 第348行 extern void video_get_info_str ( /* setup a board string: type, speed, etc. */ int line_number, /* location to place info string beside logo */ char *info /* buffer for info string */ ); #endif 源码在此:
|