Chinaunix首页 | 论坛 | 博客
  • 博客访问: 275944
  • 博文数量: 55
  • 博客积分: 3030
  • 博客等级: 中校
  • 技术积分: 682
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-30 11:33
文章分类

全部博文(55)

文章存档

2011年(1)

2010年(12)

2009年(42)

我的朋友

分类: LINUX

2009-10-08 13:06:00

前两天想让我的开发板(ARM 920T)挣脱PC机的控制,昨天是能让LCD显示控制台信息了,但是不能用USB键盘操作,今天有了新的进展了,USB键盘可以直接操作我的开发板。至此,我的控制台转移大告成功。为了让网友了解我的整个转移过程,我先把我昨天写的博客粘贴如下:

这两天一直想让我的开发板挣脱PC机的控制,把控制台移到LCD上去,然后用USB键盘作为输入,在LCD上构成一个终端。此刻有了一点点进展,于是把她记录下来,虽然我的开发板现在还不能用USB键盘作为输入设备(总提示“usb 1-1 device not accepting address....”等)。

我用的内核是linux2.6.14,硬件为ARM 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

   可能有人会和我遇到同样的情况:用vivibootloader后,会发现要向开发板下载文件比较麻烦,因为很难在网上找到能支持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下载文件了。

好,下面我就接着上面的写了:

修改内核文件driver/usb/host/ohci-s3c2410.c,在里面加入下面三条语句:

#include 

#include 

unsigned long upllvalue = (0x78<<12)|(0x02<<4)|(0x03); 

再修改static void s3c2410_start_hc函数(还是这个文件),在这个函数中加入语句:

while (upllvalue !=__raw_readl(S3C2410_UPLLCON))

{

__raw_writel(upllvalue, S3C2410_UPLLCON);

mdelay(1);

就是上面一个简单的修改,让我的USB键盘有用了^_^。当然,这个成功要建立在你在配置内核时正确配置了相关的选项了。

阅读(2345) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

edaplayer2015-11-11 10:03:32

USB下载和“ char *linux_params = \"noinitrd root=/dev/mtdblock/2 init=/linuxrc console=tty0 mem=64M devfs=mount\";”
有什么因果关系?
修改console参数只是影响控制台而已,和USB下载有什么关系?vivi如果没有usb驱动,你怎么改控制台都没用吧。