1 在内核中注册SD 设备驱动
Linux-2.6.32.2 已经自带了S3C2440 芯片的SD 卡驱动,我们只需在初始化代码中加入SD 平台设备结构就可以,打开arch/arm/mach-s3c2440/mach-mini2440.c,在nand flash 平台结构后面添加如下红色代码:
;在mini2440.c 的顶部添加SD 卡设备结构所需的头文件
#include
#include
static struct platform_device mini2440_device_eth = {
.name = 'dm9000',
.id = -1,
.num_resources = ARRAY_SIZE(mini2440_dm9k_resource),
.resource = mini2440_dm9k_resource,
.dev = {
.platform_data = &mini2440_dm9k_pdata,
},
};
/* MMC/SD */
static struct s3c24xx_mci_pdata mini2440_mmc_cfg = {
.gpio_detect = S3C2410_GPG(8),
.gpio_wprotect = S3C2410_GPH(8),
.set_power = NULL,
.ocr_avail = MMC_VDD_32_33|MMC_VDD_33_34,
};并把SD 卡结构设备添加到目标平台设备集中,如图:
static struct platform_device *mini2440_devices[] __initdata = {
& s3c_device_usb,
& s3c_device_rtc,
& s3c_device_lcd,
& s3c_device_wdt,
& s3c_device_i2c0,
& s3c_device_iis,
& mini2440_device_eth,
& s3c24xx_uda134x,
& s3c_device_nand,
&s3c_device_sdi,
};
SD 卡的驱动程序底层操作实际对应源代码linux-2.6.32.2/drivers/mmc/host/s3cmci.c,根据测试,当包含内核打印信息时,SD 卡可以被正常识别使用,而没有打印信息时,则表现的不太稳定,因此我们在该程序中添加了一句延时代码,如图:
;延时函数所需的头文件
#include
static void pio_tasklet(unsigned long data)
{
struct s3cmci_host *host = (struct s3cmci_host *) data;
s3cmci_disable_irq(host, true);
udelay(50); //在此处添加了延时函数
if (host->pio_active == XFER_WRITE)
do_pio_write(host);
这样,我们就完成了SD 卡驱动的移植。
2 测试SD 卡
接上面的步骤,在内核源代码目录执行:make zImage,把生成的内核烧写到开发板中,先不要插入SD 卡(这样做是为了看插入时的打印信息),等系统启动后,进入命令行控制台,此时插入SD 卡,此时SD 卡已经被自动挂载到开发板的/sdcard 目录,同时,在Qtopia 系统中,可以看到任务栏上多了一个图标,如图SD 卡或者优盘中的所有文件会在“文档”组中全部显示出来,但它是不显示目录名称的,如果你的文件太多,那么其列表也是相当可观的。
说明:支持SD 卡或者优盘自动挂载是通过友善之臂开发的一个Qtopia 2.2.0 插件实现的,目前它只识别MMC/SD 卡或优盘的第一个分区,并且格式为常见的VFAT/FAT32/FAT16,如果你的优盘或者SD 卡不能识别,请检查是否为VFAT/FAT32/FAT16 格式。
关键字:linux mini2440 SD卡驱动 移植
引用地址:
linux-2.6.32在mini2440开发板上移植-SD卡驱动移植
推荐阅读最新更新时间:2026-03-25 10:57
linux-2.6.32在mini2440开发板上移植 SD卡驱动移植
编者:这个驱动还是比较复杂的,先移植着,以后在分析吧。 SD卡驱动移植 1 在内核中注册SD 设备驱动 Linux-2.6.32.2 已经自带了S3C2440 芯片的SD 卡驱动,我们只需在初始化代码中加入SD 平台设备结构就可以,打开arch/arm/mach-s3c2440/mach-mini2440.c,在nand flash 平台结构后面添加如下红色代码: ;在mini2440.c 的顶部添加SD 卡设备结构所需的头文件 #include linux/mmc/host.h #include plat/mci.h static struct platform_device mini2440_device_eth = { .n
[单片机]
移植 Linux 2.6.32.2 到 mini2440
先介绍一下此次移植的主要目标对象: 平台:Windows 7 旗舰版 And Fedora 9 目标板:mini2440 目标系统: linux-2.6.32.2 交叉编译链: arm-liunux-gcc 4.4.3 busybox版本: busy.1.13.3 yaffs2版本: yaffs2-20100330(友善那坑爹的文档说光盘有这个压缩包……我有你妹啊……这个是我从官网下载的) 本来以为吧,有友善的移植文档作为参考,只要一步一步来,应该会比较顺利的……不过很快我发现我真是太天真了……友善那坑爹的移植文档实在是让我火大……一个简单的移植过程,在有参考文档的前提下,足足搞了哥4天时间,期间因为按部就班地按照友善的移植文档而
[单片机]
Linux中SPI子系统图解和mini2440下的SPI驱动移植
1.SPI子系统框图详解: SPI总线上有两类设备:一类是主控端,通常作为SOC系统的一个子模块出现,比如很多嵌入式MPU中都常常包含SPI模块。一类是受控端,例如一些SPI接口的Flash、传感器等等。主控端是SPI总线的控制者,通过使用SPI协议主动发起SPI总线上的会话。而受控端则被动接受SPI主控端的指令,并作出响应的响应。 如图1所示,linux下的spi子系统主要涉及3个部分:spi核心、spiprotocol驱动和spi主控制器驱动。如图1.1,spi核心负责抽象出所有控制器都具备的功能代码,同时向上为spiprotocol驱动提供接口比如spi_message、spi_transfer,spi_async等,具
[单片机]
linux-2.6.32在mini2440开发板上移植-配置USB外设
编者:因为LINUX内核对S3C2440的Host驱动的已经支持,而且支持的外设相当的丰富,所以这一部分只是进行配置就可以使用。因为配置的东西较多,没有给出详细的截图,看手册上介绍的就很明白。需要手册的请留下邮箱索取。 1 配置和测试USB 键盘、扫描器和鼠标 在内核源代码目录的终端输入:make menuconfig,依次选择如下子菜单项: Device Drivers --- HID Devices --- 按空格键选中“USB Human Interface Device (full HID) support”,这样就配置好了USB键盘和鼠标项。 提示:这里的配置选项对应的内核源代码目录是:linux-
[单片机]
linux-2.6.32在mini2440开发板上移植-RTC移植
激活RTC 驱动 编者:RTC时钟在S3C2440上的移植非常的简单,因为linux已经支持了,仍以platform的形式来实现,只要把RTC的platform_deivce进行注册,对内核进行简单配置就好。但对于RTC的驱动的实现,很有值得研究的地方。这一驱动典型的使用了,linux内核中驱动分层设计的思想,对这驱动的研究,有利于理解linux内驱动的布局。对于一般的驱动,比较复杂的,很难看懂,这个就很不适合进行入门。太简单的,什么hello、led,这个容易懂,但这个也只能入门,不能用于深入。我感觉RTC驱动用来深入一点的入门是很好的,其中涉及到了platform和驱动设计中的分离思想。下面还是主要以手册所介绍为步骤,简述一下
[单片机]
linux2.6.32.2 mini2440平台移植-- UDA1341 音频驱动移植
1.6.1 在初始化文件中加入 UDA1341 设备结构 Linux-2.6.32.2已经完美的支持UDA1341音频芯片的驱动,我们只要在arch/arm/mach-s3c2440/mach-mini2440.c 文件中注册 UDA1341 平台设备的控制端口就可以了,打开 mach-mini2440.c,添加如下内容: //在文件首部添加头文件 #include sound/s3c24xx_uda134x.h //在 LCD 平台设备后面添加 UDA1341 设备结构 static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = {
[单片机]
linux2.6.32.2 mini2440平台移植-- 激活 RTC 驱动
RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片. RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的变频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。8254本身工作也需要有自己的驱动时钟(PIT)。 1.2.1 在初始化文件中加入 RTC 设备结构 Linux-2.6.32.2 内核对 2440 的 RTC 驱动已经十分完善了,但并未在 mach-mini2440.c 中的设备集中加入它,因此并没有被激活,加入 RTC 结构体如下红色字体: ;在 mini2440 设备集中加入 RTC
[单片机]
Linux2.6.32移植到MINI2440(2)添加Nand Flash驱动,修改分区
开发环境: 主机:fedora 14 虚拟机:vmware workstation 10 交叉编译工具:arm-linux-gcc 4.3.2 开发板:mini2440(2m nor ,64m sdram,256m nand) 一、添加头文件 在/arch/arm/mach-s3c2440/mach-mini2440.c中 vim mach_mini2440.c 添加进去如下头文件: #include linux/mtd/partitions.h #include linux/mtd/nand_ecc.h #include linux/mtd/mt
[单片机]