当前位置: 首页 > news >正文

光山网站建设网络营销中网站建设的策略

光山网站建设,网络营销中网站建设的策略,青岛市建筑工程管理服务中心,一般网站有哪些模块今天我们来移植U-boot到jz2440开发板#xff0c;修改代码支持DM9000网卡。查看之前写的移植记录请点击链接#xff1a;点击查看之前的移植记录 现在大多数开发板都支持DM9000网卡。我们的U-boot源码里面也是有DM9000网卡的驱动程序的。文件为Dm9000x.c#xff08;drivers\n…今天我们来移植U-boot到jz2440开发板修改代码支持DM9000网卡。查看之前写的移植记录请点击链接点击查看之前的移植记录 现在大多数开发板都支持DM9000网卡。我们的U-boot源码里面也是有DM9000网卡的驱动程序的。文件为Dm9000x.cdrivers\net. 首先我去网卡目录的Makefile文件中搜索dm9000字符串 由Makefile得知如果我们定义了CONFIG_DRIVER_DM9000这个宏那么dm9000网卡就会被编译进去同时要去掉cs8900网卡。 首先在smdk2440.h中找到下面的宏定义 #define CONFIG_CS8900 /* we have a CS8900 on-board */ #define CONFIG_CS8900_BASE 0x19000300 #define CONFIG_CS8900_BUS16 /* the Linux driver does accesses as shorts */ 这是cs8900网卡的定义我们把它去掉加上dm9000所需要的宏 #ifdef 0 #define CONFIG_CS8900 /* we have a CS8900 on-board */ #define CONFIG_CS8900_BASE 0x19000300 #define CONFIG_CS8900_BUS16 /* the Linux driver does accesses as shorts */ #else #define CONFIG_DRIVER_DM9000 #endif 重新编译uboot肯定会显示有错误不可能这么简单就弄好了但是我们一步解决一个错误 显示错误 dm9000x.c:156: error: DM9000_DATA undeclared (first use in this function) dm9000x.c:156: error: (Each undeclared identifier is reported only once dm9000x.c:156: error: for each function it appears in.) 。。。。 。。。。 显示说dm9000x.c中的56行没有定义DM9000_DATA这个宏参数。在经验不足对驱动程序了解不多的情况下我们没有办法知道这个宏参数是干什么的但是我们可以仿照uboot中现有的程序中相同的地方模仿。我们在uboot源码中搜索DM9000_DATA这个字符串 输入grep “DM9000_DATA” * -nR 这是Linux下搜索字符串的命令 显示很多配置文件中用到了DM9000_DATA这个参数我们随便找一个配置文件进去看看别人是怎么配置的假如找的是这个吧 include/configs/at91sam9261ek.h:159:#define DM9000_DATA (CONFIG_DM9000_BASE 4) 好进去看了之后别的是这么配置DM9000的网卡参数的 #define CONFIG_DRIVER_DM9000 #define CONFIG_DM9000_BASE 0x04014000 #define DM9000_IO CONFIG_DM9000_BASE #define DM9000_DATA (CONFIG_DM9000_BASE 2) 原来是我们少定义了一些参数。那么我们来看看如何取值CONFIG_DM9000_BASE 与DM9000_DATA。 在分析之前先说一下 DM9000属于内存类接口想要操作内存类接口需要知道它的1访问地址同时还要根据DM9000的实际情况2设置内存控制器的时序以及位宽。 1设置访问地址 首先是 CONFIG_DM9000_BASE 这个是DM9000的基地址是CPU用来识别网卡的一个基地址。 查看DM9000网卡原理图它的片选引脚是nGCS4那么我们查看2440手册因为网卡是内存类的接口所以我们看2440手册内存控制器那一章找到片选信号的地址分配表 从中可以看出nGCS4这个片选引脚对应的初始地址是0x20000000。那么我们就把CONFIG_DM9000_BASE这个值设为0x20000000就会把nGCS4引脚设为低电平从而片选到DM9000网卡设备。 然后是 DM9000_DATA的地址取值。查看原理图知cpu只发出了LADDR2给DM9000网卡内的CMD引脚 说明CPU只关心访问地址的第2位所以我们把基地址加4设置一下第二位的值#define DM9000_DATA (CONFIG_DM9000_BASE 4) 那么总的修改是 #define CONFIG_DRIVER_DM9000 #define CONFIG_DM9000_BASE 0x20000000 #define DM9000_IO CONFIG_DM9000_BASE #define DM9000_DATA (CONFIG_DM9000_BASE 4) 那么我们已经设置好了上面说的第一步设置访问地址下面再看如何设置内存控制器的时序以及位宽。 2设置内存控制器的时序以及位宽 uboot中lowlevel_init.S中有设置内存控制器寄存器的相关的代码 SMRDATA:.long 0x22011110 //BWSCON.long 0x00000700 //BANKCON0.long 0x00000700 //BANKCON1.long 0x00000700 //BANKCON2.long 0x00000700 //BANKCON3 .long 0x00000700 //BANKCON4.long 0x00000700 //BANKCON5.long 0x00018005 //BANKCON6.long 0x00018005 //BANKCON7.long 0x008C04F4 // REFRESH.long 0x000000B1 //BANKSIZE.long 0x00000030 //MRSRB6.long 0x00000030 //MRSRB7 .long 0x22011110 //BWSCON这个寄存器应该是设置的位宽.long 0x00000700 //BANKCON4nGCS4这个应该是设置时序的寄存器 1首先我们在2440手册中搜索BWSCON这个寄存器。在207页有设置位宽的寄存器位操作其中19:18:17:16位对应的是BANK4所以查看是否需要设置这四位 DW4是设置位宽的的位对应17:16位。我们计算.long 0x22011110 //BWSCON这个寄存器的值用寄存器位查看器知 17:16位对应的是01.那么查看手册知01 16-bit。查看原理图得知DM9000网卡的位宽刚好是16位所以不需要修改了。18位的等待信号DM9000上没有不需要设置。19位的也没有用到不需要设置。 2再看如何设置时序设置BANKCON4寄存器。找到如下图 这里面就是设置DM9000的时序了至于怎么设置为什么这么设置可以参考韦东山第二期视频移植DM9000网卡驱动程序那一节里面有详细讲过这里不再讲解。 看看原始设置的各个位是对少 对比之前韦东山二期视频讲解的DM9000时序设置我们在这里将位7:6设置为01。则对应的寄存器的值为 所以将BANKCON4的值改为0x00000740。 然后重新编译 编译顺利通过。 将生成的镜像文件烧写到NOR FLASH启动 看到显示Net: No ethernet found。那么我们去源码中搜索看是哪个地方。 源码中搜索Net: Board.c中 #if defined(CONFIG_CMD_NET)puts(Net: );eth_initialize(gd-bd); 跳到eth_initialize 里面有一个函数board_eth_init 我们找board_eth_init 函数smdk2410.c这个名字一直没有改成2440的忘记了暂时这么用吧不影响 int board_eth_init(bd_t *bis) {int rc 0; #ifdef CONFIG_CS8900rc cs8900_initialize(0, CONFIG_CS8900_BASE); #endifreturn rc; } 发现没有初始化我们的DM9000网卡。我们在DM9000网卡驱动程序中找到dm9000_initialize。应该是DM9000的初始化函数。我们在linux下搜索这个dm9000_initializegrep “dm9000_initialize” * -nR,看看有没有类似的初始化。发现大多是这样的 return dm9000_initialize(bis); 那么我们将上面的board_eth_init函数改成 int board_eth_init(bd_t *bis) {int rc 0; #ifdef CONFIG_CS8900rc cs8900_initialize(0, CONFIG_CS8900_BASE); #endif#ifdef CONFIG_DRIVER_DM9000 rc dm9000_initialize(bis); #endifreturn rc; } 重新编译启动 OK啦我们的网卡终于加好了。 现在ping一下电脑看看 先设置ip set ipaddr 10.11.235.102 ping 10.11.235.146 显示 *** ERROR: ethaddr not set 没有设置mac地址重启设置 set ipaddr 192.168.1.102 set ethaddr 00:0c:29:4d:e4:f4 可以随便设置 ping 192.168.1.102 显示如下 OK显示主机alive。已经ping通了。下面我们试一下看看能不能用tftp下载。因为uboot没有集成TFTP工具那么我们就用windows上的tftp工具进行下载内核。 如图为TFTP下载工具注意服务器ip 在板子上uboot上设置 set serverip 192.168.1.102 tftp 30000000 uImage_4.3 然后启动内核 bootm 30000000 成功启动内核。说明我们已经成功了现在下载比用dnw下载要方便快捷的多。 想一起探讨以及获得各种学习资源加我有我博客中写的代码的原稿 qq1126137994 微信liu1126137994 可以共同交流关于嵌入式操作系统C语言C语言数据结构等技术问题
http://www.yutouwan.com/news/168425/

相关文章:

  • 天门市网站建设建设一个网站需要哪些员工
  • 江门公司做网站做网站找云无限
  • 做网站的人联系电话领地免费网站程序
  • 网站设计实例网站开发项目答辩主持词
  • 津南区提供网站建设协议wordpress 排行
  • 茶叶淘宝店网站建设pptaspx网站开发 案例
  • 境外网站icp备案做网站的可以信吗
  • 在深圳怎么进大公司网站建设工程有限公司是做什么的
  • sap.net怎么做网站广州做网站多
  • 吴江盛泽建设局网站大三亚app下载
  • 苏州市城乡和建设局网站怎么免费建个人网站
  • 建设工程合同备案在什么网站上wordpress 截取文章内容
  • 建购物网站多少钱网站系统维护要多久
  • 贵阳网站建设电话在线网站建设机构
  • 曰本孕妇做爰网站深圳坪山高级中学
  • 福建住房和城乡建设局网站wordpress怎么加
  • 从哪个网站设置宽带主机wordpress插件自动更新
  • vs做网站通过e浏览器湘潭平台公司
  • 企业网站的价值体现是在怎么寻找做有益做网站的客户
  • 苏州建网站公司江苏住房城乡建设部部官方网站
  • 爱旅游网站制作北京到安阳高铁时刻表查询
  • 风烛源网站管理系统杭州营销型网站建设
  • 做国际网站花钱吗国内最好的在线网站建设
  • 电商设计网站有哪些在线购物网站 模版
  • 汽车网站建设参考文献开题报告百度地图广告投放
  • seo网站推广目的图片常采用gif或jpeg格式
  • 深圳微商城网站设计多少钱微信公众号网页怎么制作
  • 宁波拾谷网站建设毕业设计 建设网站
  • 律师网站建设品牌wordpress -editor
  • 建设一个下载网站网站怎做