历史上的今天
返回首页

历史上的今天

今天是:2024年08月26日(星期一)

正在发生

2021年08月26日 | 内核(2.6.14) + 根文件系统 +Qtopia Core 4移植 for S3C2410

2021-08-26 来源:eefocus

TARGET

CPU:   S3C2410X

SDRAM: HY57V561620(32MB) × 2

FLASH: K9F1208(64MB)

NET:   CS8900

HOST

Linux Realse Version: Fecora Core 6

CrossCompiler: gcc-4.1.1/arm-linux-gcc-3.4.1


一、内核移植(2.6.14)

1   修改linux2.6.14下面的makefile文件

    找到ARCH和CROSS_COMPILE,修改

    ARCH ?= arm

    CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- 

(此处为你交叉编译的路径)

 

2  设置flash分区

    在arch/arm/machs3c2410/devs.c文件中添加头文件

    #include

    #include

    #include  

    然后建立分区表

    /* 一个Nand Flash总共64MB, 按如下大小进行分区 分区大小自己看着办*/

    static struct mtd_partition partition_info[] ={

        { /* 1MB */

            name: "bootloader",

            size: 0x00100000,

            offset: 0x0,

        },{ /* 3MB */

            name: "kernel",

            size: 0x00300000,

            offset: 0x00100000,

        }, { /* 40MB */

            name: "root",

            size: 0x02800000,

            offset: 0x00400000,

        }, { /* 20MB */

        name: "user",

        size: 0x00f00000,

        offset: 0x02d00000,

        }

    };

 

    /*加入Nand Flash分区*/

    struct s3c2410_nand_set nandset ={

    nr_partitions: 4, /*指明partition_info中定义的分区数目*/

    partitions: partition_info, /* partition table分区信息表*/

    };

 

    /*建立Nand Flash芯片支持*/

    struct s3c2410_platform_nand superlpplatform={

        tacls:0,

        twrph0:30,

        twrph1:0,

        sets: &nandset,

        nr_sets: 1,

    };

    tacls, twrph0, twrph1的意思见S3C2410手册的63,

    这3个值最后会被设置到NFCONF中,见S3C2410手册66.

    sets: 支持的分区集        nr_set:分区集的个数

   

    /*加入Nand Flash芯片支持到Nand Flash驱动

    另外,还要修改此文件中的s3c_device_nand结构体变量,添加对dev成员的赋值*/

    struct platform_device s3c_device_nand = {

        .name = "s3c2410-nand",

            /* Device name */

        .id = -1,

            /* Device ID */

        .num_resources = ARRAY_SIZE(s3c_nand_resource),

        .resource = s3c_nand_resource, /* Nand Flash Controller Registers */

            /* Add the Nand Flash device */

        .dev = {

        .platform_data = &superlpplatform

        }

    };

    指定启动时初始化

    arch/arm/machs-3c2410/mach-smdk2410.c文件

    找到platform_device *smdk2410_devices[] __initdata函数,在该函数体最后加上一条语句:

    &s3c_device_nand,

 

    禁用禁止Flash ECC校验(有不同说法)

    修改drivers/mtd/nand/s3c2410.c

    找到chip->eccmode = NAND_ECC_SOFT;

    改为chip->eccmode = NAND_ECC_NONE;

   

    支持启动挂载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

 

3   Yaffs2文件系统支持

下载yaffs2.tar.gz源码包,解压源码,并进入目录执行

#./patch-ker.sh c /linux-2.6.14.1/

注:假定内核源码在/linux-2.6.14.1/

 

4   编译配置内核,首先先load一个默认的内核/linux-2.6.14/arch/arm/configs/smdk2410_defconfig,在这个配置文件上改

    Loadable module support >

        [*] Enable loadable module support

            [*] Automatic kernel module loading

 

    System Type >

        [*] S3C2410 DMA support

 

    Boot options >

        Default kernel command string:

        noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

 

    Floating point emulation >

        [*] NWFPE math emulation

 

    Device Drivers >

        Memory Technology Devices (MTD) >

            [*] MTD partitioning support

                #支持MTD分区,这样我们在前面设置的分区才有意义

            [*] Command line partition table parsing

                #支持从命令行设置flash分区信息,灵活

            RAM/ROM/Flash chip drivers >

                <*> Detect flash chips by Common Flash Interface (CFI) probe

                <*> Detect nonCFI AMD/JEDECcompatible flash chips

                <*> Support for Intel/Sharp flash chips

                <*> Support for AMD/Fujitsu flash chips

                <*> Support for ROM chips in bus mapping

            NAND Flash Device Drivers >

                <*> NAND Device Support

                <*> NAND Flash support for S3C2410/S3C2440 SoC

       

Character devices >

            [*] Nonstandard serial port support

            [*] S3C2410 RTC Driver

 

    File systems >

        <> Second extended fs support #去除对ext2的支持

        Pseudo filesystems >

            [*] /proc file system support

            [*] Virtual memory file system support (former shm fs)

            [*] /dev file system support (OBSOLETE)

            [*] Automatically mount at boot (NEW)

                #这里会看到我们前先修改fs/Kconfig的成果,devfs已经被支持上了

        Miscellaneous filesystems >

            <*> Compressed ROM file system support (cramfs) #支持cramfs

            <*> YAFFS2 file system support                  #支持yaffs2

        Network File Systems >

            <*> NFS file system support

 

二、CS8900网卡驱动的移植

1   cs8900.c和cs8900.h放到/drivers/net/arm/

 

2   在cs8900.c中的cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t));函数之后添加如下两条语句:

    __raw_writel(0x2211d110,S3C2410_BWSCON);

    __raw_writel(0x1f7c,S3C2410_BANKCON3); 

    添加头文件#include

 

3   修改drivers/net/arm/目录下的Kconfig文件,在最后添加如下内容:

    config ARM_CS8900

   tristate "CS8900 support"

        depends on NET_ETHERNET && ARM && ARCH_SMDK2410

    help

 

4   修改drivers/net/arm/目录下的Makefile文件,在最后添加如下内容:

    obj-$(CONFIG_ARM_CS8900)    += cs8900.o

 

5   在/arch/arm/mach-s3c2410/mach-smdk2410.c文件中,找到smdk2410_iodesc[]结构数组,添加如下如下内容:{vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE}

    添加头文件#inlcude  

推荐阅读

史海拾趣

General Electric Solid State公司的发展小趣事

首先,需要澄清的是,直接关于“General Electric Solid State”公司的发展故事在现有的参考资料中并不详尽,因为“General Electric Solid State”可能并不是一个独立的公司名称,而是指通用电气公司(General Electric Company,简称GE)在固态技术或固态电子领域的业务或产品部门。以下是根据通用电气公司在电子行业,特别是固态技术领域的发展历程,提炼出的五个相关故事:

1. 固态技术的早期探索

背景:在20世纪中后期,随着半导体技术的飞速发展,通用电气公司(GE)作为电气行业的领导者,迅速投入到了固态技术的研发中。这一时期,GE的工程师们致力于开发更高效的固态器件,如晶体管、集成电路等,以替代传统的电子管设备。

发展:GE的研究团队在固态材料的选择、制造工艺的优化以及性能提升方面取得了显著进展。这些成果不仅推动了GE自身产品的升级换代,也为整个电子行业向固态化、集成化方向发展奠定了基础。

2. 固态器件在电力系统中的应用

背景:电力系统是GE的传统优势领域之一。随着固态技术的成熟,GE开始将固态器件应用于电力系统中,以提高电力系统的效率和可靠性。

应用:GE研发了一系列基于固态技术的电力电子设备,如固态继电器、固态断路器、固态变压器等。这些设备在电力系统中扮演着重要角色,能够有效减少能源损耗、提高电力传输效率,并增强电力系统的稳定性和安全性。

3. 固态照明技术的突破

背景:通用电气公司的创始人托马斯·爱迪生因发明电灯而闻名于世。进入21世纪后,GE继续在照明领域深耕,将固态技术应用于照明产品中。

成果:GE成功推出了LED(发光二极管)照明产品,这些产品具有能效高、寿命长、环保等优点。GE的LED照明技术不仅应用于家庭和商业照明领域,还广泛应用于户外照明、工业照明等多个场景,为全球节能减排事业做出了贡献。

4. 固态传感器与工业自动化

背景:随着工业自动化水平的不断提高,对传感器的精度、稳定性和可靠性提出了更高的要求。GE凭借其在固态技术方面的积累,开始研发高性能的固态传感器。

应用:GE的固态传感器在工业自动化领域得到了广泛应用,如温度传感器、压力传感器、加速度传感器等。这些传感器能够实时监测设备的运行状态和环境参数,为工业自动化控制提供精准的数据支持。

5. 固态技术在医疗设备中的创新

背景:医疗设备对技术的要求极高,尤其是在精确性和可靠性方面。GE作为医疗设备领域的领军企业之一,不断将固态技术引入医疗设备的研发中。

创新:GE利用固态技术开发出了一系列创新的医疗设备,如固态成像设备(如CT、MRI等)、固态激光治疗器等。这些设备在医疗诊断、治疗等方面发挥了重要作用,提高了医疗服务的效率和质量。

请注意,以上故事是基于通用电气公司在电子行业,特别是固态技术领域的整体发展历程进行提炼的。由于“General Electric Solid State”并非一个明确的公司名称,因此故事中的具体细节可能需要根据GE的实际情况进行适当调整和补充。

DIOTEC公司的发展小趣事

为了进一步拓展欧洲市场,DIOTEC于1989年在斯洛文尼亚的特尔博夫列建立了第二家工厂。这座工厂成为了DIOTEC在欧洲的重要生产基地,不仅提高了产能,还使得公司能够更好地服务欧洲客户。斯洛文尼亚工厂的建成,标志着DIOTEC在欧洲市场的地位得到了进一步巩固。

ATM [Advanced Technical Materials]公司的发展小趣事

随着科技的进步,ATM也在不断进行技术创新和升级。从最初的简单取款功能,到现在的存款、转账、查询等多种功能,ATM的功能日益丰富。同时,随着移动支付和互联网金融的兴起,ATM也在逐渐与这些新技术融合,提供更加便捷、安全的金融服务。

AMI [American Megatrends Inc]公司的发展小趣事

20世纪60年代,英国人谢泼德·巴伦产生了发明一款“随时可以取钞票的机器”的想法,并付诸实践。1967年6月27日,世界上第一台ATM在英国伦敦北部的巴克莱银行亮相。这台机器的成功推出,标志着ATM开始进入公众的视野,并逐渐在全球范围内得到广泛应用。

ENOCEAN公司的发展小趣事

EnOcean GmbH成立于2001年,总部设在慕尼黑附近的奥伯兴。自创立之初,公司就专注于无线无源传输技术的研发,旨在提供一种无需外部电源、低维护成本的无线传感器解决方案。这种技术的核心在于能量转换器,能够收集环境中的微弱能量(如光能、振动能等),转化为电能供传感器使用。随着技术的不断完善,EnOcean逐渐在电子行业中崭露头角。

Cardinal Components公司的发展小趣事

在发展的道路上,Cardinal始终将质量管理放在首位。1997年,公司成功获得ISO认证,标志着其质量管理水平达到了国际标准。随后,在2001年,公司又获得了ISO 9001-200认证,进一步巩固了其在行业中的领先地位。这些认证的获得不仅提升了公司的声誉,也为客户提供了更可靠的产品和服务。

问答坊 | AI 解惑

关于AD初始化

请问一下为何在AD初始化时    AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3 总是写不进去 这是一个朋友出现的问题。 使用的是外部时钟参考。我让他先对ADCREFSEL做了设置,然后再对ADCBGRFDN做如上设置,延时5ms后再进行AD转换,但他说AdcRegs ...…

查看全部问答>

用VHDL编程实现一个双工系统

本人求一个程序,用VHDL编程实现一个双工系统 具体为:一个开关控制3个LED显示(如数字516)并且下载到CPLD中检查 …

查看全部问答>

驱动程序开发学习入门历程!!

本人一直是做上层应用程序的开发,对底层一无所知,现在公司需要,我必须转入WinCE网卡驱动方面的开发(尤其是NDIS),或者是Windows网卡驱动方面的开发(我想应该能逐类旁通),对我来说可以说是从零开始学起,请教各位大大,我该从哪学起,再学什么?告诉我历 ...…

查看全部问答>

Lattice TransFR技术

概述 在广泛的应用中,由于现场逻辑更新的前所未有的灵活性,它为设计者提供了修正错误、应对不断变化的标准,升级设备和添加其他服务的特性,现场逻辑更新的重要性不断增加。同时在越来越多的应用中,要求系统能够在99.999 %的时间内运行。莱 ...…

查看全部问答>

STM32初学者感悟,欢迎大家拍砖

最近一直想熟悉下STM32的开发环境,包括程序的烧写调试之类的,对STM32过分苛刻,希望在外部flash调试运行代码。但是实际上,这样做的速度极慢。 这样做也失去了STM32作为 MCU的优势,工程应用上是不会这么用的,诚如大侠说所想要大的存储空 ...…

查看全部问答>

51单片机应用开发案例精选》源代码及图片

51单片机应用开发案例精选》源代码及图片…

查看全部问答>

巴特沃斯滤波器二阶

  巴特沃斯滤波器是电子滤波器的一种。巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。这种滤波器最先由英国工程师斯替芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国《无线电工程》期刊的一篇论文中提出的。    ...…

查看全部问答>

DSP编程 中断程序

同时使用4个中断    定时器中断、内部中断、SPI中断、外部中断,IMR=?  始终进不了外部中断   内部中断的中断标志位值乱跑。。。。 [ 本帖最后由 zdhsteven 于 2013-4-26 22:51 编辑 ]…

查看全部问答>

LPC800 mini kit ISP问题

本帖最后由 autodash 于 2014-1-28 18:29 编辑 今天测试LPC800  mini kit   CRP读保护的时候,写入CRP2(0x87654321),然后 下载完,悲剧了,ISP不能再用了,难道这个芯片就这样挂了??实在不甘心,那位有解决放方法,十分 ...…

查看全部问答>

NVDC注意事项(一)

本视频介绍了NVDC充电器的注意事项和利弊权衡,回顾电池充电器配置,讲解NVDC充电器设计以及设计时需要注意的几个方面。 …

查看全部问答>