下载最新的驱动http://www.aleph1.co.uk/cgi-bin/ ... fs2.tar.gz?view=tar 解压在工作目录s3c2440下
从http://www.handhelds.org/download/projects/toolchain/ 下载arm-linux-gcc-3.4.1.tar.bz2
3、增加devfs文件管理器的支持
我们所用的文件系统使用的是devfs文件管理器。修改fs/Kconfig,
找到
menu "Pseudo filesystems"
添加如下语句:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
帮助理解:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,能够修改Kconfig,
这样就能够选择这个驱动,假如想使这个驱动被编译,要修改Makefile。
4、修改晶振频率(可解决打印信息乱码问题)
文件:arch/arm/mach-s3c2440/mach-smdk2440.c
/*s3c24xx_init_clocks(16934400);*/s3c24xx_init_clocks(12000000);
5、修改MTD分区
文件:arch/arm/plat-s3c24xx/common-smdk.c
需要和bootloader中的分区信息相同(256M),否则,启动时出错。
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "boot",
.size = 0x00020000,
.offset = 0
},
[1] = {
.name = "MyApp",
.size = 0x00380000,
.offset = 0x00180000,
},
[2] = {
.name = "Kernel",
.size = 0x00300000,
.offset = 0x00500000,
},
[3] = {
.name = "fs_yaffs",
.size = 0x07800000,
.offset = 0x00800000,
}
};
问题:什么是MTD?
MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。
MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。
有几点需要注意:
a、此信息需根据自己的实际分区信息修改
b、这里文件系统所在的分区标号必须与板子上root_fs的号码相同,否则启动会出错。因此这里不需要将所有
的分区信息都写进来,只要位置对应即可!
6、关闭ECC校验
文件:drivers/mtd/nand/s3c2410.c
函数:s3c2410_nand_init_chip
/*chip->ecc.mode = NAND_ECC_SOFT; */chip->ecc.mode = NAND_ECC_NONE;
问题:关于ECC:ECC是“Error Correcting Code”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现
“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,这将使整个
电脑系统在工作时更趋于安全稳定。此处为避免容易出错,将ECC关闭。
7、修改nandflash驱动,支持K9F1G08的nandflash
修改drivers/mtd/nand下面的nand_bbt.c文件:
static struct nand_bbt_descr largepage_memorybased = {
.options = 0,
.offs = 0,
.len = 1, //原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash
.pattern = scan_ff_pattern
};
static struct nand_bbt_descr largepage_flashbased = {
.options = NAND_BBT_SCAN2NDPAGE,
.offs = 0,
.len = 1, //原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash
.pattern = scan_ff_pattern
};
8、下面,开始配置内核。
进入linux-2.6.35目录,把s3c2410的默认配置写入config文件。
make s3c2410_defconfig
make menuconfig
配置文件系统选项
配置yaffs2文件系统
修改配置如下:
File systems --->
[*] Miscellaneous filesystems --->
<*> YAFFS2 file system support
-*- 512 byte / page devices
-*- 2048 byte (or larger) / page devices
[*] Autoselect yaffs2 format
[*] Cache short names in RAM
配置cpu相关选项
修改配置如下:
System Type --->
S3C2440 Machines --->
[*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module
去掉S3C2400 Machines、S3C2410 Machines、S3C2412 Machines、S3C2442 Machines的所有选项,
否则会报错。如果现在编译内核,下载到开发板中,内核就可以正常启动了.有了雏形,继续移植设备驱动。
这里,内核选项*代表编译至内核,M代表编译为模块。
9、移植USB host驱动
在这个版本的linux内核,已经对USB驱动进行来很好的支持,仅仅需要修改配置。
Device Drivers --->
[*] USB support --->
{*} Support for Host-side USB
[*] USB device filesystem (DEPRECATED)
[*] USB device class-devices (DEPRECATED)
<*> OHCI HCD support
<*> USB Mass Storage support
[*] HID Devices --->
{*} Generic HID support
[*] /dev/hidraw raw HID device support
SCSI device support --->
<*> SCSI device support
[*] legacy /proc/scsi/ support
<*> SCSI disk support
<*> SCSI tape support
10、移植RTC驱动
在这个版本的linux内核,已经对RTC驱动进行来很好的支持,不需要修改配置。相应配置如下
Device Drivers --->
<*> Real Time Clock --->
[*] Set system time from RTC on startup and resume
(rtc0) RTC used to set the system time
[ ] RTC debug support
*** RTC interfaces ***
[*] /sys/class/rtc/rtcN (sysfs)
[*] /proc/driver/rtc (procfs for rtc0)
[*] /dev/rtcN (character devices)
<*> Samsung S3C series SoC RTC
然后添加对设备的支持
打开arch/arm/mach-s3c2440/mach-smdk2440.c,添加设备,代码如下:
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_rtc,
};
11、移植UDA1341驱动
在平台上添加和配置UDA1341:
修改arch/arm/mach-s3c2440/mach-smdk2440.c,在开始添加头文件
#include <sound/s3c24xx_uda134x.h>
#include <mach/gpio-fns.h>
添加设备配置
static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = {
.l3_clk = S3C2410_GPB(4),
.l3_data = S3C2410_GPB(3),
.l3_mode = S3C2410_GPB(2),
.model = UDA134X_UDA1341,
};
static struct platform_device s3c24xx_uda134x = {
.name = "s3c24xx_uda134x",
.dev = {
.platform_data = &s3c24xx_uda134x_data,
}
};
把设备添加到平台当中
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_rtc,
&s3c24xx_uda134x,
};
内核配置如下
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> OSS Mixer API
<*> OSS PCM (digital audio) API
[*] OSS PCM (digital audio) API - Include plugin system
[*] Support old ALSA API
[*] Verbose procfs contents
[*] Verbose printk
[*] Generic sound devices --->
<*> ALSA for SoC audio support --->
<*> SoC Audio for the Samsung S3C24XX chips
<*> SoC I2S Audio support UDA134X wired to a S3C24XX
12、移植DM9000驱动
a、修改drivers/net/dm9000.c文件:
头文件增加:
#include <mach/regs-gpio.h>
#include <mach/irqs.h>
#include <mach/hardware.h>
在dm9000_probe函数开始增加:
unsigned char ne_def_eth_mac_addr[]={0x00,0x12,0x34,0x56,0x80,0x49};
static void *bwscon;
static void *gpfcon;
static void *extint0;
static void *intmsk;
#define BWSCON (0x48000000)
#define GPFCON (0x56000050)
#define EXTINT0 (0x56000088)
#define INTMSK (0x4A000008)
bwscon=ioremap_nocache(BWSCON,0x0000004);
gpfcon=ioremap_nocache(GPFCON,0x0000004);
extint0=ioremap_nocache(EXTINT0,0x0000004);
intmsk=ioremap_nocache(INTMSK,0x0000004);
writel(readl(bwscon)|0xc0000,bwscon);
writel( (readl(gpfcon) & ~(0x3 << 14)) | (0x2 << 14), gpfcon);
writel( readl(gpfcon) | (0x1 << 7), gpfcon); // Disable pull-up
writel( (readl(extint0) & ~(0xf << 28)) | (0x4 << 28), extint0); //rising edge
writel( (readl(intmsk)) & ~0x80, intmsk);
在这个函数的最后需要修改:
if (!is_valid_ether_addr(ndev->dev_addr)) {
/* try reading from mac */
mac_src = "chip";
for (i = 0; i < 6; i++)
//ndev->dev_addr[i] = ior(db, i+DM9000_PAR);
ndev->dev_addr[i] = ne_def_eth_mac_addr[i];
}
b、修改arch/arm/mach-s3c2440/mach-smdk2440.c,添加设备
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_rtc,
&s3c24xx_uda134x,
&s3c_device_dm9000,
};
c、修改arch/arm/plat-s3c24xx/devs.c
添加头文件
#include <linux/dm9000.h>
添加以下代码
static struct resource s3c_dm9000_resource[] = {
[0] = {
.start = S3C24XX_PA_DM9000,
.end = S3C24XX_PA_DM9000+ 0x3,
.flags = IORESOURCE_MEM
},
[1]={
.start = S3C24XX_PA_DM9000 + 0x4, //CMD pin is A2
.end = S3C24XX_PA_DM9000 + 0x4 + 0x7c,
.flags = IORESOURCE_MEM
},
[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ
},
};
static struct dm9000_plat_data s3c_device_dm9000_platdata = {
.flags= DM9000_PLATF_16BITONLY,
};
struct platform_device s3c_device_dm9000 = {
.name= "dm9000",
.id= 0,
.num_resources= ARRAY_SIZE(s3c_dm9000_resource),
.resource= s3c_dm9000_resource,
.dev= {
.platform_data = &s3c_device_dm9000_platdata,
}
};
EXPORT_SYMBOL(s3c_device_dm9000);
d、修改arch/arm/plat-sumsung/include/plat/devs.h 45行附近,添加
extern struct platform_device s3c_device_dm9000;
e、修改arch/arm/mach-s3c2410/include/mach/map.h文件
/* DM9000 */
#define S3C24XX_PA_DM9000 0x20000300
#define S3C24XX_VA_DM9000 0xE0000000
13、启动画面显示小企鹅的方法
配置内核,下面是必选项
Device Drivers--->
Graphics support --->
<*> Support for frame buffer devices
<*> S3C2410 LCD framebuffer support ,multi support!
Console display driver support --->
<*> Framebuffer Console support
Logo configuration --->
[*] Bootup logo
[*] Standard 224-color Linux logo
14、3.5寸LCD显示的移植
2.6.34内核中已经支持
15、修改uart2为普通串口以及测试程序
修改arch/arm/mach-s3c2440/mach-smdk2440.c中的uart2的配置,修改后如下:
static struct s3c2410_uartcfg smdk2440_uartcfgs[] __initdata = {
[0] = {
.hwport = 0,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,
.ufcon = 0x51,
},
[1] = {
.hwport = 1,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,
.ufcon = 0x51,
},
/* IR port */
[2] = {
.hwport = 2,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,/*fatfish 0x43*/
.ufcon = 0x51,
}
};
在drivers/serial/samsung.c中添加对uart2控制器的配置,配置为普通串口。
添加头文件:
#include <linux/gpio.h>
#include <mach/regs-gpio.h>
在static int s3c24xx_serial_startup(struct uart_port *port)函数中,添加
if (port->line == 2) {
s3c2410_gpio_cfgpin(S3C2410_GPH(6), S3C2410_GPH6_TXD2);
s3c2410_gpio_pullup(S3C2410_GPH(6), 1);
s3c2410_gpio_cfgpin(S3C2410_GPH(7), S3C2410_GPH7_RXD2);
s3c2410_gpio_pullup(S3C2410_GPH(7), 1);
}
测试方法:
在linux内核源码中drivers/serial/samsung.c中
.dev_name = "ttySAC",
写明在开发板/dev目录下生成的ttySACx为串口设备结点。
使用命令:
getty 115200 /dev/ttySAC2
将终端交给com2,这样可以在com2中收到波特率为115200的终端信息。
这三个针的顺序:最靠近底板丝印层“com2”字样的针脚是com2的发送脚(需要接pc串口的接收脚),中间的
是com2的接收脚(接pc串口的发送脚),剩下的那个是地(接pc串口的地)。
16、移植看门狗
修改配置
Device Drivers --->
[*] Watchdog Timer Support --->
<*> S3C2410 Watchdog
相关推荐
linux-2.6.35.3-102c9c0.tar.bz2 —— 内核源码包 1、将源码包复制到Ubuntu操作系统中,使用下面的命令解压: tar jxvf linux-2.6.35.3-102c9c0.tar.bz2 2、进入解压后的源码目录,执行build-kernel脚本: ...
linux-2.6.35.3内核移植(s3c2440.pdf
linux-2.6.35.3在TQ2440上移植1--建立自己的板子
linux 2.6.30源码,官方版本。
我已经开始从亚马逊的linux-2.6.31版本中添加Yoshi(Kindle第4代的代号)源,并使该源适用于较新的2.6.35内核。 这样做的动机是现代buildroot需要2.6.32或更高版本。 我相信这是由于现代版本的binutils不支持任何...
卫东山 jz2440 V3,有源码,有补丁,还有打好补丁的源码 解压源码后,进入目录下打补丁: patch -p1 < ../system/linux-2.6.22.6_jz2440_v2v3.patch cp config_ok ./config make uImage 生成内核镜像
linux2.6.35.3:linux周立功IMX287A开发板内核源码
GrandDog_Driver_1.0.35.3
该程序是基于linux-2.6.35.3内核,开发板i.MX283(287)A,包含驱动源码及其编译后的.ko文件,测试源码等
文件名称: jinstall-ex-2200-14.1X53-D26.2-domestic-signed.tgz 文件大小: 107 MB (113,105,828 字节) MD5: E0390EBF7F0B4A55E4BE28964AFC52B9 SHA1: 2AF9DB365B7666D0B17ABEBBE4DE6B73E7EF4FC5 CRC32: C1659B34
35.3. 哪里可以取得帮助? 35.4. 制作这本书的工具 35.4.1. 硬件 35.4.2. 软件和排版软件 35.5. Credits Bibliography A. Contributed Scripts B. Reference Cards C. A Sed and Awk Micro-Primer C.1. Sed...
35.3. 哪里可以取得帮助? 35.4. 制作这本书的工具 35.4.1. 硬件 35.4.2. 软件和排版软件 35.5. Credits Bibliography A. Contributed Scripts B. Reference Cards C. A Sed and Awk Micro-Primer C.1. Sed C.2. Awk ...
这里面介绍了一一些Linux操作系统中相关的网络参数的配置情况
序列对齐 Compare a protein sequence to a protein sequence database or a DNA sequence to a DNA sequence database using the Smith-Waterman algorithm.[.wat815.] \fCssearch3\fP is about 10-times ...
35.3 The set-covering problem 1117 35.4 Randomization and linear programming 1123 35.5 The subset-sum problem 1128 VIII Appendix: Mathematical Background Introduction 1143 A Summations 1145 A.1 ...
35.3 赋值和函数 340 35.4 第一个有用的例子 342 第36章 设计有记忆的函数 346 36.1 对记忆的需求 346 36.2 记忆与状态变量 347 36.3 初始化记忆的函数 348 36.4 改变记忆的函数 349 第37章 使用记忆的例子 354 37.1...
jetson高版本刷机后发现 flash.sh 不能备份了 也许是参数修改了我不会弄了,不过这版驱动完整可以用 在ubuntu18.04解开 到flash.sh目录下执行 sudo ./flash.sh -r -k APP -G backup.img jetson-tx2 备份
GrandDog宏狗WINDOWS系统下的驱动安装程序DogInst.exe,宏狗具有很高的安全性,可有效防止软件盗版的发生。软件开发商使用宏狗编译工具快速地编写自己的算法并导入到硬件狗中,从而大大提升软件保护的安全性。
• 在 868 MHz、14 dBm 输出功率的条件下,TX 电流为 35.3 mA • 在活动模式 (EM0) 下,运行功耗为 67 μA/MHz • 在 EM2 深度睡眠模式下,电流为 1.3 μA(保留 16 kB RAM,RTCC 从 LFRCO 中运行) • 无线模块唤醒...
• 在 868 MHz、14 dBm 输出功率的条件下,TX 电流为 35.3 mA • 在活动模式 (EM0) 下,运行功耗为 67 μA/MHz • 在 EM2 深度睡眠模式下,电流为 1.3 μA(保留 16 kB RAM,RTCC 从 LFRCO 中运行) • 无线模块唤醒...