这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【转】我的6410开发板使用心得

共1条 1/1 1 跳转至

【转】我的6410开发板使用心得

菜鸟
2011-09-27 12:15:53     打赏

开发板:立宇泰6410(百度,谷歌上搜下有很多介绍,我也是点点鼠标知道的)
系统:linux2.6.28(也可以支持Android,ubuntu,WINCE6.0(R2/R3操作系统,这点我觉得超赞)
  
   因为研究项目要求需要购置一款开发板做研发,朋友介绍一款Samsung S3C6410处理器,ARM1176JZF-S内核的板子,这点是符合,但其它要素也要考虑的!去网上搜了下,很

多网站上都有产品宣传资料及一些评价!初步看了下,硬件配件资源还不错,基本符合我们的要求,评价大多数都是正面的,这让我开始想了解下立宇泰其它产品特性及评价及报

价之类的,产品好报价太高这个我们不会优先考虑的,谁不想买个物美价廉的呢!去他们官网看了下,产品介绍都很详细,软硬件配置及图片都挺吸引人的,用户手册、升级说明

等都有文档展示,还有一点很重要的是有售后支持,这样产品购买后有问题也不需要担心怎么处理了!虽然只是购买一款核心板,就那么一块小小的板子,但是马虎不得的,如果

没有购买好,对项目研究及成果都有很大影响,所以我也有压力啊!对比了下几家主流的开发板公司,一些公司产品质量是不错就是价格让人难以接受,还有一些开发板公司面向

的是学生市场,价格是低就是让人有点不放心。但是一份价格一份货,如果要作为产品开发,我自然还是要选择可靠点的。
   最后选择联系立宇泰公司,听了详细介绍及报价后,拍案决定先购置一款带3.5寸屏的开发板套餐,套餐组合就不详细介绍了,发个链接,有兴趣的可以去看看,当然还有很

多其它配置的产品的!http://www.hzlitai.com.cn/plus/view.php?aid=1778 使用之后发现,速度果然很不错,跟ARM9的S3C2440不可同日而语,当然项目也做的非常成功!
   当然,这中间也会有一些技术问题需要一些支持,不过都很快得到解决。就比如说Linux下内存大小的传递,对于一些资深研究人员这当然是简单的问题,可是对于刚开始学

习的我还是需要琢磨下!立宇泰技术支持给我发了个文档,跟着操作问题很快解决!发一些资料上来分享下,希望能帮助跟我一样的人!
   Memory: 128MB = 128MB total
  Memory: 70556KB available (3888K code, 493K data, 520K init)
  
  这打印出自于:arch/arm/mm/init.c
  
  void __init mem_init(void)
  
  内存地址:arch/arm/mach-s3c6400/include/mach/memory.h
  
  内存大小:arch/arm/kernel/setup.c中设定。MEM_SIZE (64*1024*1024) 不对。
  
  arm linux中一般在cmdline或传递tag参数中设置, 个别板子在machine_desc.fixup函数中设置. 按顺序分别说明:
  
  1, 出现顺序(内核版本2.6.25.20,下同)
  start_kernel()
   ->setup_arch()
   ->mdesc->fixup()
   ->parse_tags()
   ->parse_tag_mem32()
   ->parse_cmdline()
   ->early_mem()
  
  2, fixup()函数
  这个函数arm平台用的很少. 我只找到eseries.c, mach-smdk2413.c, mach-vstms.c这几个arm板子有, smdk2413_fixup()是在bootloader传递tag地址与machine_desc预设tag

地址(mem_PA+0x100)不同时设置memory的start和size. 如果fixup起作用, 会从tag中把mem tag改为ATAG_NONE, 后面的"parse_tag_mem32"就没用了.
  
  3, parse_tag_mem32()
  该函数定义在"arch\arm\kernel\setup.c". 把bootloader传入的mem tag(ATAG_MEM)的start和size参数通过"arm_add_memory()"加入到meminfo的最后一个bank中. start是

memory物理起始地址.
  
  4, early_mem()
  该函数定义在"arch\arm\kernel\setup.c". 处理cmdline中的"mem=size@start".
  如果没有定义mem起始地址, 使用PHYS_OFFSET(arm中应由arm开发板设置)作为start. early_mem()会覆盖前面设置的meminfo.
  
  呵呵, 你为什么会想到找这个? 我当初是板级移植u-boot到s3c2410时分析的代码, 当时还不知道sourceinsight, 用grep查找的
  
  "arch\arm\mm\init.c"文件和这个好像没关系, 里面的"bootmem_init()"会根据这里设置的meminfo计算出high_memory. 系统物理memory会1:1映射到"AGE_OFFSET---

high_memory-1".
  ==========================================================
  三种方式:
  1.使用内核源代码中的定义
  通常ARM嵌入式开发板的系统物理内存仅有一块,系统物理内存的指定通常通过三个宏:
  PHYS_OFFSET:系统内存的物理起始地址,板级相关,在include/asm-arm/arch-xxx/memory.h中
  PAGE_OFFSET:系统内存的虚拟起始地址,体系结构相关,为0xC0000000,在include/asm-arm/memory.h中
  MEM_SIZE:系统内存大小,如果板级(include/asm-arm/arch-xxx/xxx.h)没有指定,则使用体系结构的缺省值16M(arch/arm/kernel/setup.c)
  在没有内存命令从内核命令行(cmdline)传入的情况下 ,setup_arch()函数 (arch/arm/kernel/setup.c文件中)会使用PHYS_OFFSET和MEM_SIZE指定为系统内存并且映射到

PAGE_OFFSET。
  
  2.通过fixup函数设置
  也可通过fixup_xxx()函数(arch/arm/mach-xxx/arch.c)设置内存的起始地址和大小,映射到PAGE_OFFSET,此项设置会覆盖(1)的设置
  
  3.通过内核命令行传入
  如果内核命令行中有系统内存相关的命令(mem=XXXM[@YYY])则会覆盖掉(1),(2)中所介绍的映射而将XXX作为内存大小,YYY作为内存物理起始地址(如果有)映射到

PAGE_OFFSET
  
  以上是2.4内核,2.6内核基本差不多




关键词: 我的     开发     使用     心得     内存     设置    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]