一、linux-2.6.28.7内核配置过程
1,新编译好的内核下载到FLASH中,启动linux以后报错,说找不到rootfs入口,解决方法是内核编译选项中选中“file system->yaffs2 fs support”,以及"let yaffs to its ecc".
2,烧写好内核及文件系统后,发现无论怎么点击触摸屏,系统都没有反应,可是开发板自带的kernel烧上去后就没有问题,所以,判断问题还是出于内核配置的问题。解决办法是内核配置“device drivers->input device->(*)touchscreen interface并且(*)touchscreen event”, 以及“device drivers->input device->touchscreen->enable s3c2410 touchscreen”。配置完成以后,启动linux以后触屏功能正常,正常进入到屏幕校准的程序。但是屏幕校准很多次都有问题,判断有可能是x和y的坐标颠倒了,下面进行修改。(其实起初我也不能肯定是哪里有问题,只是命令行能打印出touchscreen点击的坐标信息,但是系统界面就是没有反应,所以我才想驱动应该没问题,问题可能出在和qtopia沟通的问题,然而文件系统又没有问题,因此,我只能抱着试试的态度把内核当中的touchscreen interface选上,再把event功能选上,没想到还真的行了,其实就是猜出来的。现在真是汗颜呀。。。以后开发要是靠猜的话,那活就没法干了。。。)
3,现在出现屏幕校准总是无法通过的问题,看开发板的说明文档上说,应该是x和y坐标颠倒了。因此想办法修改代码。我确定是/drivers/input/touchscreen/s3c2410_ts.c这个文件操作touchscreen,但是不应该修改驱动代码(因为代码没有错),只能修改与板相关的定义文档,因此修改了/arch/arm/plat-s3c/include/plat/regs-adc.h,这些都是与板相关的寄存器值的定义,我修改了:
#define S3C2410_ADCDAT0 S3C2410_ADCREG(0x0C)
#define S3C2410_ADCDAT1 S3C2410_ADCREG(0x10)
修改为
#define S3C2410_ADCDAT1 S3C2410_ADCREG(0x0C)
#define S3C2410_ADCDAT0 S3C2410_ADCREG(0x10)
然后重新编译内核,烧入后就解决了这个问题,触摸屏成功校准,然后一切正常。
考虑这次修改,把x和y的数据寄存器交换了,我觉得这样改有可能在以后会出现问题,比如可能影响到AD转换时的某些功能。但是目前真想不出什么更好的办法,先这样吧。
4.为开发板配置LED流水灯驱动和功能
需要首先配置内核,“device drivers->leds driver->(M)led class”以及“device drivers->leds driver->(M)s3c24xx led drivers”总共选择了两项,并且都选择编译为模块的形式。保存,
在重新编译内核之前,需要修改一下内核当中的板级文件,这里主要需要修改/arch/arm/plat-s3c24xx/common-smdk.c文件,里面定义了led设备的led-platform-device和led-platdata,在这个文件中,需要根据开发板硬件电路图分析出led接在哪个GPIO口上了,然后进行相应修改,文件中原来是GPF4,改为GPB5,改了四个灯。然后修改文件中的设备结构数组,修改设备初始化函数。这些地方都需要修改,修改内容根据修改后的led-platform-device和led-platdata。
修改完后,重新编译内核,结果在/drivers/leds/目录下生成了两个文件:leds-class.ko以及s3c24xx-leds.ko. 其中,s3c24xx-leds.ko模块依赖于leds-class.ko文件,insmod的时候,需要先insmod leds-class.ko文件。
在开发板上成功insmod s3c24xx-leds.ko后,可以发现在/sys/devices/platform/下面多了led灯的设备,让灯点亮和熄灭的方法是:
cd /sys/devices/platform/s3c24xx-led.0/s3c24xx-led.0
echo 1 > brightness(开灯)
echo 0 > brightness(关灯)
5,配置网络文件系统(NFS)
之前按照开发板手册进行NFS挂载,结果怎么也挂不上。今天(20110603)才终于发现,原来是内核配置有问题,最后配置的时候经过这样配置,就成功挂载了:file system->network file system->
--- Network File Systems │ │
│ │ <*> NFS client support │ │
│ │ [*] NFS client support for NFS version 3 │ │
│ │ [ ] NFS client support for the NFSv3 ACL protocol extension│ │
│ │ [ ] NFS client support for NFS version 4 (EXPERIMENTAL) │ │
│ │ [ ] Root file system on NFS
6,内核突然出现不能insmod模块的问题及解决。
今天(20110611)希望给内核上insmod一个驱动,结果insmod出错,不能insmod这个驱动,然后我就觉得奇怪,为什么突然不能insmod了?然后我就把以前曾经测试没问题的流水灯的驱动模块试着加载一下,结果也加载不上,insmod leds-class.ko的时候,出现“unknown relocation:40”。真是太奇怪了!以前明明都行的!后来到网上一查,据说是因为binutil这个工具被我升级了,才会导致的,是内核的一个bug,需要打个patch,没办法,只好去找patch了。但是我记得我好像没升级过呀,网上有网友说他从binutils2.8升级到2.9就出现这个问题,但是我怎么也不记得自己升级过,算了,只好打补丁了。找到一个arm_R_ARM_V4BX_fix.patch的包,然后打上:patch -p1 arm_R_ARM_V4BX_fix.patch
然后重新编译内核。
结果这回终于可以把模块insmod上了。
7,为内核添加USB闪存的支持功能
这个功能需要配置如下地方:
--- USB support │ │
│ │ <*> Support for Host-side USB │ │
│ │ [ ] USB verbose debug messages │ │
│ │ [ ] USB announce new devices │ │
│ │ *** Miscellaneous USB options *** │ │
│ │ [*] USB device filesystem │ │
│ │ [*] USB device class-devices (DEPRECATED) │ │
│ │ [ ] Dynamic USB minor allocation │ │
│ │ [*] USB Monitor │ │
│ │ < > Enable Wireless USB extensions (EXPERIMENTAL) │ │
│ │ < > Support WUSB Cable Based Association (CBA)
*** USB Host Controller Drivers *** │ │
│ │ < > Cypress C67x00 HCD support │ │
│ │ < > ISP116X HCD support │ │
│ │ <*> OHCI HCD support │ │
│ │ < > SL811HS HCD support │ │
│ │ < > R8A66597 HCD support │ │
│ │ < > Host Wire Adapter (HWA) driver (EXPERIMENTAL) │ │
│ │ < > Inventra Highspeed Dual Role Controller (TI, ...)
*** NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may al│ │
│ │ *** see USB_STORAGE Help for more information *** │ │
│ │ │ │ [ ] USB Mass Storage verbose debug │ │ │ │ [ ] Datafab Compact Flash Reader support │ │ │ │ [ ] Freecom USB/ATAPI Bridge support │ │ │ │ [ ] ISD-200 USB/ATA Bridge support │ │ │ │ [ ] Microtech/ZiO! CompactFlash/SmartMedia support │ │ │ │ [ ] USBAT/USBAT02-based storage support │ │ │ │ [ ] SanDisk SDDR-09 (and other SmartMedia) support │ │ │ │ [ ] SanDisk SDDR-55 SmartMedia support 以上将USB的host端以及usb mass storage support都加上了。但是配置文件还提到需要加上SCSI支持,配置如下: < > RAID Transport Class │ │ │ │ <*> SCSI device support │ │ │ │ │ │ [*] legacy /proc/scsi/ support │ │ │ │ *** SCSI support type (disk, tape, CD-ROM) *** │ │ │ │ <*> SCSI disk support │ │ │ │
上一篇:FL2440烧写bootloader的方法
下一篇:jz2440烧写方法笔记
推荐阅读最新更新时间:2024-11-10 09:41
设计资源 培训 开发板 精华推荐
- 使用 Infineon Technologies AG 的 IRU1075 的参考设计
- VIN = 2.5V 至 4.2V、VOUT = 5V、I 负载 = 100mA 时 ZXSC420 DC-DC 升压开关控制器的典型应用
- 使用 ROHM Semiconductor 的 BD4824 的参考设计
- LT3663IMS8E-3.3 5V 降压转换器的典型应用
- BADGER-SIM3L1-EK、SiM3L1xx 低功耗 32 位 MCU 评估套件
- LTC1275、12 位、300 ksps 采样 A/D 转换器和基准电压源的典型应用
- 使用 ON Semiconductor 的 CS-8181 的参考设计
- LTC6995 TimerBlox 的典型应用:长定时器、低频振荡器
- 1.5V~30V 3A可调式开关电源电路原理图+PCB资料
- 用于汽车照明的 18 个 LED 通用 LED 驱动器