分类: LINUX
2009-10-07 13:45:52
这两天一直想让我的开发板挣脱PC机的控制,把控制台移到LCD上去,然后用USB键盘作为输入,在LCD上构成一个终端。此刻有了一点点进展,于是把她记录下来,虽然我的开发板现在还不能用USB键盘作为输入设备(总提示“usb 1-1 device not accepting address....”等)。
我用的内核是linux2.6.14,硬件为S3C2410.
1、在vivi源码arch/s3c24l0/smdk.C文件中作出相应的修改。
修改cmd_line为:
“char linux_cmd[] = "initrd root=/dev/mtdblock/2 init=/linuxrc console=tty0";”
这里的tty0能将lcd framebuffer0作为标准输出设备。
2、编译vivi。并将vivi下载到开发板的0分区。
3、修改内核:进入“Character devices”,勾选“[*] Support for console on virtual terminal”。再在Console device 里选中Framebuffer Support。最后屏蔽console on serial port选项,编译下载内核到1分区。
4、启动linux后,vivi就会把控制台交给LCD了。
注意:想通过把内核配置里“Boot options”项下面的“defaule kernel command string”子项更改为“initrd root=/dev/mtdblock/2 init=/linuxrc console=tty0”来达到目的是没用的。控制台是由“bootloader”来发言的,而不是内核,所以这里我们选择了更改vivi。
可能有人会和我遇到同样的情况:用vivi作bootloader后,会发现要向开发板下载文件比较麻烦,因为很难在网上找到能支持USB下载的vivi。我自己后来的做法是,在我买的开发板所自带的bootloader源码里有个叫的nand.c的程序,这个程序里有一行语句“ char *linux_params = "noinitrd root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0 mem=64M devfs=mount";”,我把它改成“ char *linux_params = "noinitrd root=/dev/mtdblock/2 init=/linuxrc console=tty0 mem=64M devfs=mount";”,再在Windows下用ADS编译一下(或者你可以直接在linux下编译,但你得写个Makefile)。把生成的bin文件下载到开发板的0分区就KO了。这样你就不必担心自己因为用vivi就不能用USB下载文件了。