首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 开发>Linux 嵌入式>文章内容
嵌入应用--9200M开发板实验文档
来源:http://www.unix5.com 作者:linux爱好者 发布时间:2008-05-07  
 

U-boot基于H9200M开发板的移植: 我们的移植属于板级上的移植,也就是说我们所用的处理器已被uboot支持,要让处理器能运行uboot就属于板级移植。板级移植需要在 uboot源码/board/中建立一个相应目标板的目录,再在其中建立相应的flash.c、at91rm9200dk.c、at45.c和链接描述文 档u-boot.lds和Makefile、config.mk就可以了。板级移植还包括环境变量设置等内容。

具体步骤:6s8Linux联盟
由于我们的开发板与uboot现已支持的AT91RM9200DK十分相似,因此上述的文件不需要全部自己重新编写,只要copy过来稍作修改便可正常运行,所以:6s8Linux联盟
1、 在board目录中建立H9200M目录 ;6s8Linux联盟
2、 把board/at91rm9200dk/* copy到我们刚才所建的目录中;6s8Linux联盟
3、 由于H9200M的NORFLASH与AT91RM9200DK板的有所不同,我们的是富士通公司产的FLASH芯片,4MB容量,因此需要修改H9200M中的flash.c文件,实际就是修改FLASH的驱动。6s8Linux联盟
A、 在原有的数据结构数组下添加下面一块富士通FLASH的数据结构6s8Linux联盟
查29LV320BE的手册得知,该芯片有8个8KB和63个64KB段

6s8Linux联盟
OrgDef  OrgMBM29LV320BE[] ={  { 8,  8*1024 },  /*    8 *  8 kBytes sectors  */   { 63, 64*1024 },  /*  63 * 64 kBytes sectors  */ };6s8Linux联盟
B、添加一宏定义

6s8Linux联盟
# define  FLASH_READ_RESET     0xF0  //定义RESET命令的宏6s8Linux联盟
C、在flash_identification FLASH芯片识别函数中6s8Linux联盟
29LV320BE手册建议进入AUTOSELECT模式时,最后先RESET芯片,确保芯片在读模式6s8Linux联盟
1)、添加

6s8Linux联盟
/*  Read Reset  */ MEM_FLASH_ADDR1 = FLASH_CODE1;MEM_FLASH_ADDR2 = FLASH_CODE2;MEM_FLASH_ADDR1 = FLASH_READ_RESET;6s8Linux联盟
由于芯片的操作是实际使用的芯片密切相关的,所以要配置相应芯片的信息6s8Linux联盟
2)、把供应商改为富士通

6s8Linux联盟
/*  Vendor type  */ info->flash_id = FUJ_MANUFACT & FLASH_VENDMASK;printf ("FUJITSU and AMD: ");6s8Linux联盟
3)、由于我们已清楚H9200M所使用的FLASH型号,因此可把原来flash.c中自动判断是什么型号的芯片那段程序去掉,直接改为

6s8Linux联盟
/*  AMD Flash  */ info->flash_id |= AMD_ID_LV320B & FLASH_TYPEMASK; // flash_id = 0x000422F9 printf ("MBM29LV320B (32Mit, bottom boot sect)\n");6s8Linux联盟
D、在flash_print_info FLASH芯片信息显示函数中6s8Linux联盟
1)、把信息改为富士通

6s8Linux联盟
case (FUJ_MANUFACT & FLASH_VENDMASK):  printf ("FUJITSU and AMD: ");  break;6s8Linux联盟
2)、同样我们不需判断芯片型号因此把判断的语句去掉,改为

6s8Linux联盟
switch (info->flash_id & FLASH_TYPEMASK) {  case (AMD_ID_LV320B & FLASH_TYPEMASK):     printf ("MBM29LV320BE (32Mit, bottom boot sect)\n");     break;  default:     printf ("Unknown Chip Type\n");     return;}6s8Linux联盟
E、在flash_erase FLASH擦除函数中6s8Linux联盟
1)、把生产商改为富士通,要不然无法对芯片进行擦除

6s8Linux联盟
if ((info->flash_id & FLASH_VENDMASK) != (FUJ_MANUFACT & FLASH_VENDMASK)) { return ERR_UNKNOWN_FLASH_VENDOR; }6s8Linux联盟
4、在uboot根目录下的Makefile中,在at91rm9200dk_config一行下添加上

6s8Linux联盟
h9200m_config : unconfig   @$(MKCONFIG)  $(@:_config=)  arm  arm920t  h9200m  NULL  at91rm92006s8Linux联盟
其中6s8Linux联盟
arm: CPU的架构(ARCH) 6s8Linux联盟
arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。6s8Linux联盟
h9200m: 开发板的型号(BOARD),对应于board/h9200m目录。6s8Linux联盟
NULL: 开发者/或经销商(vender)。6s8Linux联盟
at91rm9200: 片上系统(SOC),对应于cpu/arm920t/at91rm9200子目录。

6s8Linux联盟
5、把board/h9200m/at91rm9200dk.c中

6s8Linux联盟
/*  arch number of AT91RM9200DK-Board  */  gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200; 改为gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200DK; 目的是与linux内核中对应的目标板的硬件编号相对应

共4页: 上一页 1 [2] [3] [4] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·嵌入式Linux系统下图形库讲解及
·Qt/Embedded在嵌入式Linux中的应
·嵌入式Linux:uClinux操作系统移
·嵌入式系统 Boot Loader 技术内
·嵌入式 用户图形接口uC/GUI的简
·基于GTK+和X的GUI在嵌入式Linux
·嵌入式Linux系统下的MiniGUI研究
·Linux串口上网的简单实现 (图解)
·在Ubuntu上建立Arm Linux的开发
·嵌入式Linux操作系统启动信息完
·Linux 2.6 内核的嵌入式系统应用
·嵌入式Linux在Blackfin处理器上
  相关文章
·如何在虚拟机Linux系统下连接ARM
·BusyBox 精简嵌入式 Linux 系统
·嵌入式uClinux的内核结构和开发
·三种嵌入式操作系统的深入分析与
·嵌入式Linux平台的多协议路由器
·实时嵌入式系统的图形界面支持系
·Linux 2.6 内核的嵌入式系统应用
·Qt/Embedded在嵌入式Linux中的应
·一种嵌入式Linux平台的软硬件设
·嵌入式Linux系统的低功耗策略研
·嵌入式Linux移植实时设备驱动程
·文档分析__嵌入式Linux在网络处

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!