码迷,mamicode.com
首页 > 其他好文 > 详细

【内核配置】五、配置一个新的暂时性测试用的内核并下载到单板SDRAM测试

时间:2018-12-21 19:39:38      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:second   save   源文件   pen   roc   x64   specified   控制   结束   

主   机:VMWare--Ubuntu-16.04.2-x64-100ask
开发板:Mini2440--256M NandFlash,   2M NorFlash,   64M SDRAM,   LCD-TD35;
    bootlorder:u-boot1.16,        Kernel:2.6.22.6;
编译器:arm-linux-gcc-3.4.5


 目录

一、目的:配置一个没有LCD模块的内核,用新内核去挂接到开发板0x30000000(即SDRAM)进行测试

二、操作步骤

  1、 编译一个新的没有LCD模块的内核--uImage_mlcd

  2、 用新内核启动开发板

  3、 重新配置单板根文件系统的/etc/inittab文件,使得单板上的Linux系统拥有串口0终端和单板按键-LCD两个控制台

三、问题


 

一、目的:配置一个没有LCD模块的内核,用新内核去挂接到开发板0x30000000(即SDRAM)进行测试:
# nfs 30000000 192.168.1.105:/work/nfs_root/uImage_mlcd
挂接(服务器上的)网络根文件系统到(开发板根文件系统的)/mnt,从flash上启动根文件系统:
# mount -t nfs -o nolock,vers=2 192.168.1.105:/work/nfs_root/fs_second /mnt
说明:经在单板测试,若单板上的根文件系统原本就是挂接的服务器上的根文件系统(例如:fs_second),则不需再用mount命令挂接网络根文件
系统到开发板了!可直接进行驱动模块加载等试,执行命令:
# echo hello > /dev/tty1
均可在单板LCD上打印出字符串“hello”!

二、操作步骤:
1、 编译一个新的没有LCD模块的内核--uImage_mlcd
$ cd /home/book/workbook/mini2440/systems/linux-2.6.22.6/
$ make menuconfig //配置内核,去掉原来的LCD驱动程序;
-> Device Drivers
-> Graphics support
<M> S3C2410 LCD framebuffer support  //配置为<M>,即模块,可以事后加载使用;
$ make uImage //编译生成新内核;
$ cp arch/arm/boot/uImage /work/nfs_root/uImage_nolcd
$ make modules //编译模块,是为了把fb_ops结构体的3个cfb_xx函数对应的cfb_xx.c源文件编译成.ko文件(模块),供稍后测试时使用。

2、 用新内核启动开发板,在倒数计时结束前按下“空格”键,进入uboot菜单>
OpenJTAG> print
...(打印的内核信息..)
ipaddr=192.168.7.17
...(打印的内核信息..)
OpenJTAG> set ipaddr 192.168.1.17
OpenJTAG> save
OpenJTAG> nfs 30000000 192.168.1.105:/work/nfs_root/uImage_mlcd //uImage_mlcd是内核菜单配置时,LCD_fb配置为<M>,即模块,可以事后加载使用;
OpenJTAG> bootm 30000000 //启动新内核uImage_mlcd;
<启动内核...>
# mount -t nfs -o nolock,vers=2 192.168.1.105:/work/nfs_root/fs_second /mnt
# cd /mnt
# ls
bin driver_test lib mnt sbin usr
dev etc linuxrc proc sys

3、 重新配置单板根文件系统的/etc/inittab文件,使得单板上的Linux系统拥有串口0终端和单板按键-LCD两个控制台

  • 修改inittab文件:

# vi /etc/inittab
#/etc/inittab
#console::askfirst:-/bin/sh
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
tty1::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

  • 查看:

# cat /etc/inittab
#/etc/inittab
#console::askfirst:-/bin/sh
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
tty1::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

  • # reboot //重启系统;

OpenJTAG> nfs 30000000 192.168.1.105:/work/nfs_root/uImage_mlcd
OpenJTAG> bootm 30000000 //启动新内核uImage_mlcd;
<启动内核...>
# mount -t nfs -o nolock,vers=2 192.168.1.105:/work/nfs_root/fs_second /mnt
# cd /mnt
# insmod cfbcopyarea.ko
# insmod cfbimgblt.ko
# insmod cfbfillrect.ko

# insmod lcd_6.ko

Console: switching to colour frame buffer device 30x40

# insmod input_keys2.ko

input: Unspecified device as /class/input/input1

<此时,LCD屏幕显示提示信息...以下都是单板按键--LCD屏幕控制台的LCD屏幕的显示信息...>

Please press Enter to activate

starting pid 768, tty ‘/dev/tty1‘: ‘/bin/sh‘

# ls

bin dev etc driver_test ...

三、问题

  • 问题:刚加载好了LCD模块,LCD可以正常使用,但是过一会不用就黑屏了,不能再显示写入的字符串了,为什么?

答:Linux下的LCD驱动默认在无操作之后10分钟后会自动关闭屏幕。

  • 问题:怎么唤醒LCD屏幕呢?

答:若加载了单板的输入子系统,可直接敲击单板上的指令“按键”,即可自动唤醒LCD屏幕进行指令操作。
在中断执行命令# echo wakakak > /dev/tty1 虽然仍然可以发送字符到单板LCD屏幕,但是不能唤醒LCD屏幕,需要用单板按键唤醒!

 

【内核配置】五、配置一个新的暂时性测试用的内核并下载到单板SDRAM测试

标签:second   save   源文件   pen   roc   x64   specified   控制   结束   

原文地址:https://www.cnblogs.com/xiaohujian/p/10158400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!