如何使linux的启动信息显示到LCD 上面

如何使linux的启动信息显示到LCD 上面,第1张

(前提是,已经将LCD驱动程序移植到内核中去)

首先修改bootloader中的启动参数信息。

将bootloader代码中的nandflash.c中的void NandPart_LoadRun(int part_sel,U32 buf) 函数里面的

char *linux_params ="noinitrd root=/dev/mtdblock2 init=/linuxrc console=tty0,ttySAC0,115200 mem=64M devfs=mount"

//noinitrd: no Initial RamDisk support

//说明:mtdblock2代表第3个flash分区,用来作根文件系统rootfs;

// console=ttySAC0,115200使kernel启动期间的信息息刚开始输出到串口0上,波特率为115200;后面的信息输出到LCD屏上

// 2.6内核对于串口的命名改为ttySAC0,但这不影响用户空间的串口编程。

// 用户空间的串口编程针对的仍是/dev/ttyS0等

这个问题比较麻烦。因为涉及到的问题很多。别怪我说话直,按照我的判断你目前的水平很难修复这个错误。建议 重装吧。而且你这个linux版本内核比较旧,应该是redhat9.0 linux.我不知道是谁给你推荐的这个版本,你可以指着他鼻子骂他一句:撒比了。

如果想学红帽子,建议安装:RHEL6.0 起码也要5.0以上的版本。目前RHCE的考试已经更换为6.0版本了。你还用redhat 9.0?

以下是相关的解决方法,这个方法是我复制的,如果你能看懂。你可以按照步骤验证一下是否能解决,不过估计能发生内核初始化失败这个错误提示的问题不光这一个。建议更换版本

首先看分区表是否变了,如果分区表变了,系统的/etc/fstab的内容肯定也变了;root分区也变了。

要做的有以下几点;

恢复GRUB ;但这个工作得在修改/etc/fstab完后才能进行;如果没变倒好说;

首先:要修改 /etc/fstab ;根据 fdisk -l 输出来查看;然后要修改/etc/grub.conf 或/boot/grub/menu.lst

二、安装grub到MBR上;

#grub-install /dev/hda

然后还得如下做;

#grub

grub>root (hdx,y)

grub>setup (hdx)

grub>quit

其中hdx和y 的值 ,要通过 fdisk -l 来查看;比如我的硬盘是/dev/hda5,则(hdx,y)应该是(hd0,4)

如果还出现 kernel 。。。。错误之类的;应该是丢了/initrd 目录,要创建一个;然后看启动信息,如果提示有错误。还得改变/initrd目录的 权限;

chmod 1777 /initrd

你只是想移植吧,具体的 *** 作如下,可能不是一一一致,但是大概个流程都是这样,建议你去下载比较高版本的代码进行移植,因为越高版本我们要下的功夫可能会更少。

1。修改内核源码根目录下的Makefile文件

#ARCH?= arm

#CROSS_COMPILE?=arm-linux-

2。修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改Nand Flash的分区信息和Nand Flash的硬件信息。这里的分区一定要和你的bootloader的一致,你可以参考smdk_default_nand_part[]这个数据结构的做法。

3。还是2中用到的文件,修改static struct s3c2410_platform_nand smdk_nand_info = {

.tacls= 0,

.twrph0= 30, //这 三个数字要改的 以前是20 60 20

.twrph1= 0,

.nr_sets= ARRAY_SIZE(smdk_nand_sets),

.sets= smdk_nand_sets,

}

4。修改drivers/mtd/nand/s3c2410.c中s3c2410_nand_init_chip函数的NAND_ECC_SOFT为NAND_ECC_NONE。

5。晶振频率:修改arch/arm/mach-s3c2440/mach-smdk2440.c

static void __init smdk2440_map_io(void)

{

s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc))

s3c24xx_init_clocks(12000000)//改成和你的一样

s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs))

}

6。添加对yaffs2文件系统的支持:

下载yaffs2的源码包,解压后进入其中,其加入Linux内核(打补丁的方式)

#cd yaffs2

#./patch-ker.sh c $you_kernel_path(你的内核代码的目录)

7。配置内核

先拷贝s3c2410开发板的默认配置到内核根目录下,以简化配置过程

# cp arch/arm/configs/s3c2410_defconfig .config

# make menuconfig

1.General setup --->

[*] Configure standard kernel features (for small systems) --->

2. System Type ---->

[*] S3C2410 DMA support [*] Support ARM920T processor

S3C2410 Machines --->

[*] SMDK2410/A9M2410

S3C2440 Machines --->

[*] SMDK2440

[*] SMDK2440 with S3C2440 CPU module

3.Boot options --->

将 (root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Default kernel command string

改成 (noinitrd root=/dev/mtdblock2 console=ttySAC0,115200 init=/linuxrc )

这里要特别注意root=/dev/mtdblock2 这个参数,mtdblock2是你的根文件系统所在的位置,和你在bootloader的分配有关,当然也和上述2。步骤的密切相关。不行的话多试几次。

4.[*] Enable loadable module support --->

[*] Module unloading

[*] Automatic kernel module loading

选择这两个,剩下的可以去掉

5.Device Drivers --->

<*>Memory Technology Device (MTD) support --->

[*] MTD partitioning support

<*>NAND Device Support --->

<*> NAND Flash support for S3C2410/S3C2440 SoC

[ ]S3C2410 NAND Hardware ECC //这个要去掉

6.File systems----->

Miscellaneous filesystems --->

<*>YAFFS2 file system support

7.make zImage

这个配置是2440和2410都通用的。网上有很多这样的教程。

另外还有一点要很注意而且也是比较头疼的:文件系统的制作,这个东西不好你弄,个人建议如果你想进驻嵌入式linux这个行业的话,韦东山的《嵌入式linux应用开发完全手册》很适合初学者学习,通过本书你会对嵌入式linux开发的整个流程都有个很明朗的认识。

好好学习吧。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7148581.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存