精华内容
下载资源
问答
  • s3c2410嵌入式教程

    2007-08-17 09:14:51
    s3c2410嵌入式开发
  • RTEMS S3C2410移植教程

    2011-10-11 10:34:25
    详细的介绍了S3C2410处理器上RTEMS操作系统移植的详细过程和注意事项,是不可多得的一分好文档!
  • S3C2410&嵌入式Linux系统教程.pdf
  • S3C2410基础实验教程 void UsbdInit(U8 fun) { isUsbdSetConfiguration = 0; rUPLLCON = (40) | (4) | 1; //UCLK=48Mhz InitDescriptorTable(fun); //初始化设备的描述符列表 ReconfigUsbd(); //重新配置USB设备 ...
  • 英蓓特S3C2410开发板全部资源实验、编译环境搭接方法
  • 很好的教你S3C2410教程。。里面有开发流程,数据手册,,实验例程等各种资源。。。由于只能传小于15M所以我删减了一些
  • 广州致远电子有限公司发布的结合MAGICARM2410实验箱所开设的嵌入式LINUX教程
  • 单片第5章_基于S3C2410的系统硬件设计.rar
  • 嵌入式Linux初级实验s3c2410
  • S3C2410MMU教程

    2009-06-17 22:14:00
     我的s3c2410上配置的SDRSAM大小为64M,该SDRAM的物理地址范围是0x3000 0000~0x33FF FFFF(属于Bank 6),由于1个Section的大小是1M,所以该物理空间可以被分成64个物理段(页框). 在Section模式下,送进MMU的虚拟地址...

    MMU,全称Memory Manage Unit, 中文名——存储器管理单元。

    许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非 常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的 不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成 许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比 如对一个16MB的程序和一个内存只有4MB的机器,OS通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片 段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。

          任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (64T).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集,这里举一个最简单的例子直观地说明这两者,对于一台内存为256MB的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256MB)。
    在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写。而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到内存管理单元——MMU(主角终于出现了:])。他由一个或一组芯片组成,一般存在与协处理器中,其功能是把虚拟地址映射为物理地址。
    大多数使用虚拟存储器的系统都使用一种称为分页(paging)。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页框(frame).页和页框的大小必须相同。在这个例子中我们有一台可以生成16位地址的机器,它的虚拟地址范围从0x0000~0xFFFF(64K),而这台机器只有32K的物理地址,因此他可以运行64K的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放64K程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页框大小与页相同(这点是必须保证的,内存和外围存储器之间的传输总是以页为单位的),对应64K的虚拟地址和32K的物理存储器,他们分别包含了16个页和8个页框。

          我的s3c2410上配置的SDRSAM大小为64M,该SDRAM的物理地址范围是0x3000 0000~0x33FF FFFF(属于Bank 6),由于1个Section的大小是1M,所以该物理空间可以被分成64个物理段(页框).
    在Section模式下,送进MMU的虚拟地址(注1)被分为两部分(这点和我们上面举的例子是一样的),这两部分为 Descriptor Index(相当于上面例子的Page Index)和 Offset,descript index长度为12bit(2^12=4096,从这个关系式你能看出什么?:) ),Offset长度为20bit(2^20=1M,你又能看出什么?:)).观察一下一个描述符(Descriptor)中的Section Base Address部分,它长度为12 bit,里面的值是该虚拟段(页)映射成的物理段(页框)的物理地址前12bit,由于每一个物理段的长度都是1M,所以物理段首地址的后20bit总是为0x00000(每个Section都是以1M对齐),确定一个物理地址的方法是 物理页框基地址+虚拟地址中的偏移部分=Section Base Address<<20+Offset ,呵呵,可能你有点糊涂了,还是举一个实际例子说明吧。假设现在执行指令
    MOV REG, 0x30000012
    虚拟地址的二进制码为00110000 00000000 00000000 00010010
    前12位是Descriptor Index= 00110000 0000=768,故在Translation Table里面找到第768号描述符,也可以这么理解:

    描述符地址=(取整)(虚拟地址 / 页大小)

    偏移量取这个公式的余数。因此:

    该描述的Section Base Address="0x0300",也就是说描述符所描述的虚拟段(页)所映射的物理段(页框)的首地址为0x3000 0000(物理段(页框)的基地址=Section Base Address左移20bit=0x0300<<20=0x3000 0000),而Offset=000000 00000000 00010010=0x12,故虚拟地址0x30000012映射成的物理地址=0x3000 0000+0x12=0x3000 0012(物理页框基地址+虚拟地址中的偏移)。你可能会问怎么这个虚拟地址和映射后的物理地址一样?这是由我们定义的映射规则所决定的。在这个例子中我们定义的映射规则是把虚拟地址映射成和他相等的物理地址。我们这样书写映射关系的代码:

    上面的这段段代码把虚拟空间0x3000 0000~0x33FF FFFF映射到物理空间0x3000 0000~0x33FF FFFF,由于虚拟空间与物理空间空间相吻合,所以虚拟地址与他们各自对应的物理地址在值上是一致的。当初始完Translation Table之后,记得要把Translation Table的首地址(第0号描述符的地址)加载进协处理器CP15的Control Register2(2号控制寄存器)中,该控制寄存器的名称叫做Translation table base (TTB) register。

    展开全文
  • ARM9嵌入式系统设计基础教程 电子课件-第3章 32 Bit RISC微处理器 S3C2410A
  • 嵌入式开发教程之基于S3C2410A的嵌入式系统的U.ppt
  • S3C2410

    2008-06-19 21:23:59
    详细介绍RAM的好资料,中文教程和英文数据手册
  • s3c2410MMU教程

    千次阅读 2007-03-14 16:25:00
     我的s3c2410上配置的SDRSAM大小为64M,该SDRAM的物理地址范围是0x3000 0000~0x33FF FFFF(属于Bank 6),由于1个Section的大小是1M,所以该物理空间可以被分成64个物理段(页框). 在Section模式下,送进MMU的 虚拟地址 ...
     MMU,全称Memory Manage Unit, 中文名——存储器管理单元。 
    

    许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非 常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的 不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成 许多称为 覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是 虚拟存储器(virtual memory). 虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比 如对一个16MB的程序和一个内存只有4MB的机器,OS通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片 段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。

         任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为 地址范围这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (64T).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为 虚拟地址空间,该空间中的某一个地址我们称之为 虚拟地址。与虚拟地址空间和虚拟地址相对应的则是 物理地址空间物理地址,大多数时候我们的系统所具备的 物理地址空间只是虚拟地址空间的一个子集,这里举一个最简单的例子直观地说明这两者,对于一台内存为256MB的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256MB)。
    在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写。而 在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到内存管理单元——MMU(主角终于出现了:])。他由一个或一组芯片组成,一般存在与协处理器中,其功能是把虚拟地址映射为物理地址。
    大多数使用虚拟存储器的系统都使用一种称为 分页(paging)。虚拟地址空间划分成称为 页(page)的单位,而相应的物理地址空间也被进行划分,单位是页 框(frame). 页和页框的大小必须相同。在这个例子中我们有一台可以生成16位地址的机器,它的虚拟地址范围从0x0000~0xFFFF(64K),而这台机器只有32K的物理地址,因此他可以运行64K的程序,但该程序不能一次性调入内存运行。 这台机器必须有一个达到可以存放64K程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页框大小与页相同(这点是必须保证的,内存和外围存储器之间的传输总是以页为单位的),对应64K的虚拟地址和32K的物理存储器,他们分别包含了16个页和8个页框。
     

         我的s3c2410上配置的SDRSAM大小为64M,该SDRAM的物理地址范围是0x3000 0000~0x33FF FFFF(属于Bank 6),由于1个Section的大小是1M,所以该物理空间可以被分成64个物理段(页框).
    在Section模式下,送进MMU的 虚拟地址(注1)被分为两部分(这点和我们上面举的例子是一样的),这两部分为 Descriptor Index(相当于上面例子的Page Index)和 Offset,descript index长度为12bit(2^12=4096,从这个关系式你能看出什么?:) ),Offset长度为20bit(2^20=1M,你又能看出什么?:)).观察一下一个描述符(Descriptor)中的Section Base Address部分,它长度为12 bit, 里面的值是该虚拟段(页)映射成的物理段(页框)的物理地址前12bit,由于每一个物理段的长度都是1M,所以 物理段首地址的后20bit总是为0x00000(每个Section都是以1M对齐),确定一个物理地址的方法是 物理页框基地址+虚拟地址中的偏移部分=Section Base Address<<20+Offset ,呵呵,可能你有点糊涂了,还是举一个实际例子说明吧。假设现在执行指令
    MOV REG, 0x30000012
    虚拟地址的二进制码为00110000 00000000 00000000 00010010
    前12位是Descriptor Index= 00110000 0000=768,故在Translation Table里面找到第768号描述符,也可以这么理解:
     
    描述符地址=(取整)(虚拟地址 / 页大小)
     
    偏移量取这个公式的余数。因此:
     
    该描述的Section Base Address="0x0300",也就是说描述符所描述的虚拟段(页)所映射的物理段(页框)的首地址为0x3000 0000( 物理段(页框)的基地址=Section Base Address左移20bit=0x0300<<20=0x3000 0000),而Offset=000000 00000000 00010010=0x12,故虚拟地址0x30000012映射成的物理地址=0x3000 0000+0x12=0x3000 0012( 物理页框基地址+虚拟地址中的偏移)。你可能会问怎么这个虚拟地址和映射后的物理地址一样?这是由我们定义的映射规则所决定的。在这个例子中我们定义的映射规则是把虚拟地址映射成和他相等的物理地址。我们这样书写映射关系的代码:
    void mem_mapping_linear(void)
    {
        unsigned long descriptor_index, section_base, sdram_base, sdram_size;
        sdram_base=0x30000000;
        sdram_size=0x 4000000;
        for (section _base= sdram_base,descriptor_index = section _base>>20;
             section _base < sdram_base+ sdram_size;
             descriptor_index+=1;section _base +=0x100000)
        {
             *(mmu_tlb_base + (descriptor_index)) = (section _base>>20) | MMU_OTHER_SECDESC;
        }
    }

    上面的这段段代码 把虚拟空间0x3000 0000~0x33FF FFFF映射到物理空间0x3000 0000~0x33FF FFFF,由于虚 拟空间与物理空间空间相吻合,所以虚拟地址与他们各自对应的物理地址在值上是一致的。当初始完Translation Table之后,记得 要把Translation Table的首地址(第0号描述符的地址)加载进协处理器CP15的Control Register2(2号控制寄存器)中,该控制寄存器的名称叫做Translation table base (TTB) register。
     
    展开全文
  • s3c2410开发板使用手册

    2008-11-14 22:12:35
    远峰的s3c2410开发板资料,很全的,介绍的比较详细,希望对大家有所帮助~
  • ADS安装使用教程 S3C2410 串口试验 LCD试验等。。。。 linux移植等试验。。。。
  • ADS1.2使用教程-基于ARM s3c2410 这里只有一章,但讲的比较详细,个人觉得不错,下载的朋友下回去一定要看看啊
  • 这是我买的广嵌GEC2410开发板里面附带的教程 目录: ARM9基础实验教程 第一章 嵌入式系统 1.1 嵌入式系统的概念 1.2 嵌入式系统的组成 1.3 嵌入式系统的发展 1.4 嵌入式系统的应用前景 第二章 ARM9 体系结构 2.1 ...
  • 内核开发实验 详细代码和实验介绍 华清远见培训教程。个人收藏。 S3C2410
  • 基于s3c2410的模块程序-LCD源代码: 包括实现原理ppt讲义,感谢我的专业老师谭曼琼老师,其出版一书《嵌入式linux系 统实训教程》,有兴趣的可以看看,讲的比较详细 实验板:ARM S3C2410开发板 软件:ads1.2 ...
  • 基于s3c2410的模块程序-串口编程源代码: 包括实现原理ppt讲义,感谢我的专业老师谭曼琼老师,其出版一书《嵌入式linux系统实训教程》,有兴趣的可以看看,讲的比较详细 实验板:ARM S3C2410开发板 软件:ads1.2 ...
  • ARM9嵌入式系统设计基础教程-第3章 32 Bit RISC微处理器 S3C2410A.zip
  • 基于s3c2410的模块程序-ADC和触摸屏源代码: 包括实现原理ppt讲义,感谢我的专业老师谭曼琼老师,其出版一书《嵌入式linux系 统实训教程》,有兴趣的可以看看,讲的比较详细 实验板:ARM S3C2410开发板 软件:ads...
  • s3c2410/2440(armv4t) 移植教程

    千次阅读 2009-02-28 23:33:00
    Androidin首发Androidin Dev.Team 熊猫哥哥ARMv4移植简单教程: 相信国内很多朋友手上都有s3c2410/2440的片子,基于armv4t(arm920t)的指令架构。在之前,因为android的一些底层代码含有armv5t的指令, 所以以前...

    Androidin首发
    Androidin Dev.Team 熊猫哥哥

    ARMv4移植简单教程

        相信国内很多朋友手上都有s3c2410/2440的片子,基于armv4t(arm920t)的指令架构。在之前,因为android的一些底层代码含有armv5t的指令, 所以以前无法移植到这样的平台。 在这里也放出移植教程和已经编译好的image。 让更多的朋友可以在自己的开发板上亲身体验android。教程基于勤研qt2410以及扬创utu2440完成。
        注意,移植是到armv4而不是armv4t,  原因应该是不开thumb支持会比较好移植一些(改动未涉及的库依然会用thumb代码,所以kernel依然要开thumb支持)。
        kernel移植及nfs配置的详细部分等请自行查阅相关文档,本文只做提点,另外需要些git的操作。
        目前的image只是临时方案。主要是基于openmoko的 benno一些尚未正式发布的patch,整体来说已经比较完善和clean,我仅做了点小修改就能使用,由于部分库用c实现替换掉了arm实现,同时一 些critical的armv5指令被armv4的替换,速度可能有点慢,尤其是2410上速度很慢。。对于严苛的android开发组来说,这些 patch部分尚未提交,部分在reviewing,还需要一些周期才会被接受进官方git。等这些patch被官方接受后,我会整理另一套正式一些的版 本,同时可能会提供些优化方案。

    A.  kernel的移植
        1. 移植,两个方案可以选。
            1). 将android的官方kernel的补丁打到自己的kernel上,这个方法对于kernel版本比较新的朋友比较合适,也很简单。比如2.6.24或以上。
                a. 下载android kernel,执行 git diff v2.6.25 HEAD > android.patch
                b. 进入你自己的kernl,执行 git apply android.patch
                c. 一般都会出error,手动合并所有带error的文件,如果你是2.6.25的话很简单,2.6.24会费点周折,因为kobject/kset的一些改动造成android power/ipv4等驱动不太好合。。
            2). 将自己kernel上的bsp移植到android官方kernel。适用于kernel比较旧的朋友。
                因为2410/2440是linux原生支持,所以基本上只需要移植lcd/touchpanel/网卡等等的驱动,并打开2410/2440支持选项 即可。这个目前网上已经有大量的资料详细阐明, 在此不再累述,但是出问题比较多的地方就在这里了。
        2. 这些步骤完成后,检查如下选项是否都已经打开(make menuconfig):
            CONFIG_AEABI=y   
            CONFIG_SHMEM=y   
            CONFIG_ASHMEM=y
            CONFIG_ARM_THUMB=y
            CONFIG_ANDROID_BINDER_IPC=y
            CONFIG_ANDROID_LOGGER=y
            以下不一定重要, 但能开就开,除非移植有问题,比如power驱动:
            CONFIG_ANDROID_POWER=y
            CONFIG_ANDROID_POWER_STAT=y
            CONFIG_ANDROID_POWER_ALARM=y
            CONFIG_ANDROID_RAM_CONSOLE=y
            CONFIG_ANDROID_TIMED_GPIO=y
            CONFIG_ANDROID_PARANOID_NETWORK=y
        3. 按需要make zImage,再生成uImage,烧写到nand。

    B. 制作android nfs root
        1. 下载我做好的android_armv4 image包,见帖子下方
        2. 准备好能启动的nfs root,设置好访问权限(重要!),资料请网上查阅,不再累述
        3. 拷贝包中的system目录到nfs_root/system, data目录到nfs_root/data, root目录到nfs_root/ (其他.img文件可以模拟器使用,同时也可以做真实文件系统,后话了)
        4. 设置nfs启动参数中的init=/init,既指向nfs_root下的init
        5. 删除nfs_root/init.rc,去掉除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外所有的mount命令

    C. 运行!
        跑跑看吧, 进入android console之后可以运行logcat查看log。第一次启动会创建很多的数据,会比较慢,2410几乎是折磨了。。平常的启动速度2440大概在1分多钟,2410要5分钟了。看到漂亮的大手表,你就搞定了!!

    常见问题:
    1. lcd不显示, 检查framebuffer..如果正常,查看nfs权限。
    2. 非法指令,检查thumb,eabi选项。
    3. servicemanager异常退出,检查binder & ashmem选项。
    其他的看kernel log和logcat自己分析吧~ 呵呵~

    简单流程就是如此,中间可能会遇到很多困难的!wish u luck!

    展开全文
  • 基于S3C2410嵌入式MDK开发实验与实践 好好看看吧 英蓓特的 很好 很强大
  • S3C2410/S3C2440开发板相关书籍

    千次阅读 2015-10-16 22:07:46
    1、ARM处理器裸机开发实战----机制而非策略  王小强 主编 电子工业出版社   实验平台:TQ2440。 裸跑中的经典教程,有注释,实例多而实用,是目前市场上最受好评的2440 裸跑教程。...3.嵌入式操作

     1、ARM处理器裸机开发实战----机制而非策略    王小强 主编   电子工业出版社 

       实验平台:TQ2440。  裸跑中的经典教程,有注释,实例多而实用,是目前市场上最受好评的2440 裸跑教程。让您从单片机51入手ARM 从此再无忧。

    2.《μC/OS-II原理与ARM应用程序设计》               张勇、方勤、蔡鹏、许波 著

    3.嵌入式操作系统原理与面向认为程序设计《基于μC/OS-II v2.86和ARM920T》 张勇 著

    4.ARM嵌入式设计与Windows CE 开发系列 《ARM原理与C程序设计》           张勇 著

    5.《基于ARM的嵌入式移植实战开发》                韩少云 奚海蛟 谌利 编著

    6.《ARM体系结构与外设接口实战开发》             奚海蛟 谌利  吕铁军 编著

    7.《基于嵌入式Linux的QT图形程序实战开发》        奚海蛟 谌利  吕铁军 编著

    8.《基于ARM的嵌入式项目实战开发》                 韩少云 奚海蛟 谌利 编著

    9.《嵌入式Linux驱动程序实战开发》                 韩少云 奚海蛟 谌利 编著

    10.《嵌入式Linux应用开发完全手册》 韦东山编著

    展开全文
  • skyeye学习之s3c2410的串口通信

    千次阅读 2012-09-29 11:35:43
    s3c2410手册 : http://wenku.baidu.com/view/105ddc264b35eefdc8d3338a.html http://wenku.baidu.com/view/c5c9171a59eef8c75fbfb3b5.html s3c2410引脚分类: ...
  • SEC S3C2410X Test B/D USB驱动 安装

    千次阅读 2017-08-01 18:00:11
    s3c2410x驱动是一款非常好用的usb驱动程序,win7 64位下mini2440 USB下载驱动安装,解决win7下安装SEC S3C2410X Test B/D 驱动...SEC S3C2410X Test B/D 驱动安装教程: 1) 在绿色资源网下载驱动: 2) 安装驱动, 3)
  • 基于ARM9处理器S3C2410的LCD显示系统设计

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,533
精华内容 613
关键字:

s3c2410教程