在這之前先說乙個環境變數bootdelay這個是時間的,也就是我們的倒數計時在這個時間沒有按下空格鍵時將進入選單模式(進去不同的模式可以自己設定這裡是進入選單模式,這是我自己加進去的),下面說說實現過程。
首先進入main.c(u-boot-1.1.6# vim common/main.c);定位到bootdelay這裡
402 #endif
403
s = getenv ("bootcmd");//獲取乙個命令
404405
debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "");
407
if (bootdelay >= 0 && s && !abortboot (bootdelay))
450 }
451 #endif
452 #endif
453
454 #ifdef config_amigaoneg3se
455
459 #endif
460
run_command ("menu", 0);而這個menu就是我們要加進來的,用來實現乙個選單選擇。。(在這裡加就可以了,原本的u-boot裡這裡是沒有東西的)
接下來就是menu命令的新增了,在common目錄裡加乙個檔案cmd_menu.c用來menu命令實現,cmd_menu.c**如下:
#include
#include
#include
#include
#ifdef config_surport_wince
#include "../wince/loader.h"
#endif
extern char awaitkey2(unsigned long delay, int* error_p);
void main_menu_usage(void)
void menu_shell(void)
case '2' :
case '3' :
case '4':
case '5':
case '6':
case '7':
break;
} case 'q':
case 'q'://推出選單模式
} }}
int do_menu(cmd_tbl_t *cmdtp,int flag, int argc, char *argv)
u_boot_cmd(
menu, 3, 0, do_menu,
"menu - display a menu, to select the items to do something\n",
" - display a menu, to select the items to do something"
);上面命令中的kernel是在標頭檔案裡定義的,其實也可以自己根據雖要改 88
89 #define mtdparts_default
"mtdparts=nandflash0:256k@0(bios)," \//意思是flash前面256k給bios(bootloadr)
90 "128k(params)," \ //接下來128k是用來存啟動引數的
91
"2m(kernel)," \//接下來2m是核心用的
92
"-(root)"
//剩下的給root
93 //nand erase root 這個命令的意思是擦去root在分割槽的內容前面的並沒有影響
最後在makefile裡加進menu這個命令如下
30 cobjs
= main.o acex1k.o altera.o bedbug.o circbuf.o \
31 cmd_ace.o cmd_autoscript.o \
32 cmd_bdinfo.o cmd_bedbug.o cmd_bmp.o cmd_boot.o cmd_bootm.o \
33 cmd_cache.o cmd_console.o \
34 cmd_date.o cmd_dcr.o cmd_diag.o cmd_display.o cmd_doc.o cmd_dtt.o \
35 cmd_eeprom.o cmd_elf.o cmd_ext2.o \
36 cmd_fat.o cmd_fdc.o cmd_fdos.o cmd_flash.o cmd_fpga.o \
37 cmd_i2c.o cmd_ide.o cmd_immap.o cmd_itest.o cmd_jffs2.o \
38 cmd_load.o cmd_log.o \
39 cmd_mem.o cmd_mii.o cmd_misc.o cmd_mmc.o \
40 cmd_nand.o cmd_net.o cmd_nvedit.o \
41 cmd_pci.o cmd_pcmcia.o cmd_portio.o \
42 cmd_reginfo.o cmd_reiser.o cmd_scsi.o cmd_spi.o cmd_universe.o \
43 cmd_usb.o cmd_vfd.o \
44 command.o console.o devices.o dlmalloc.o docecc.o \
45 environment.o env_common.o \
46 env_nand.o env_dataflash.o env_flash.o env_eeprom.o \
47 env_nvram.o env_nowhere.o \
48 exports.o \
49 flash.o fpga.o ft_build.o \
50 hush.o kgdb.o lcd.o lists.o lynxkdi.o \
51 memsize.o miiphybb.o miiphyutil.o \
52 s_record.o serial.o soft_i2c.o soft_spi.o spartan2.o spartan3.o \
53 usb.o usb_kbd.o usb_storage.o \
54 virtex2.o xilinx.o crc16.o xyzmodem.o cmd_mac.o cmd_menu.o
從新make clean
make
這樣就把選單加進去了,不過前提是你的tftp已經弄好了,才能運用上面選單,選單利用的是tftp來實現各種命令的。。。。。。。。。。。。。。。
弄好了如下
u-boot 1.1.6 (apr 29 2012 - 21:21:42)
dram: 64 mb
flash: 2 mb
nand: 256 mib
*** warning - bad crc, using default environment
in:
serial
out:
serial
err:
serial
hit any key to stop autoboot: 0
#####
boot for nor flash main menu cgy
#####
[1] download u-boot(u-boot.bin) or stepldr.nb1 or other bootloader to nand flash
[2] download linux kernel(zimage) to nand flash
[3] download cramfs(root) image to nand flash
[4] download yaffs image(root) to nand flash
[5] boot the system
[6] download program ( tq2440.bin) to nand flash and run it
[7] download u-boot to nor flash
[q] quit from menu
enter your cgytq2440:
這個博主 的文章很好,很值得學習
TQ2440背光控制
控制lcd背光就是控制s3c2440的lcd控制的lcd pwren腳lcdcon5暫存器pwren位控制lcd是否輸出。對linux 2.6.30.4核心進行移植。新建乙個backlight.c檔案放到 drivers video 目錄下。內容如下 include include include ...
《TQ2440載入Hello world驅動模組》
經過將近乙個月都時間終於按照手冊把linux核心移植完了,接下來要開始驅動模組的移植了,在網上查了一些資料,總結如下 目標平台 tq2440 arm9 核心版本 linux 2.6.25 前提 宿主機上已安裝交叉編譯工具,因為這個在linux核心移植的時候就使用過了,這裡就不說了。進入正題 1 首先...
TQ2440移植strace工具
一 以下是網上的乙個方法,但是不適合tq2440 主要是主機靜態連線的庫我沒有,呵呵 strace工具是乙個非常強大的工具,是除錯程式的好工具。要移植到arm平台,就需要使用交叉編譯工具編譯生成靜態鏈結的可執行檔案。具體步驟如下 2.解壓。3.配置。configure host arm none l...