x210-2023-03-23

发布者:EternalBliss最新更新时间:2025-01-13 来源: cnblogs关键字:移植 手机看文章 扫描二维码
随时随地手机看文章

1、前面移植mmc驱动因为有网络文章作为提示和参考,应该要配置哪些宏已经简单粗暴地告知你了,但是你怎么知道哪些宏必须配哪些可以不配(或者说要配置的宏你应该从哪找),这个问题在本次移植DM9000驱动时特别留意了一下,发现最重要的还是要知道从根抓起,也就是从board_init_r()开始找到MMC找到NET的初始化入口函数,然后顺藤摸瓜已经能找到一部分宏了,再就是源文件被编译进uboot时会需要一个关键宏(像这次DM9000,由于Makefile需要编译dm9000x.o所以要定义CONFIG_DRIVER_DM9000这个宏),除了这些,预初始化函数和初始化函数的调用和书写需要学着模仿uboot源码其它板子的,因为DM9000驱动虽然uboot提供了,但是在uboot-2012.10的s5p_goni中没有调用过,不过在比较接近S5PV210的smdkc100.c中,它是在board_init()中放的预初始化函数,而初始化函数是在smdkc100.c文件末尾的board_eth_init()中调用的,可是在S5PV210的goni.c中根本就没有board_eth_init()这个函数(因为从如果有从NET初始化入口分析过来就会知道这个board_eth_init()是weak定义的),鉴于s5p_goni还没调用过DM9000,所以就需要自己重新定义该函数,那么应该写成什么样、写完放哪都需要考虑(所以说要模仿),写的对不对以及整个函数放的位置对不对,自己编译一遍烧到板子看有没有出来现象就知道对不对了。


第一次尝试ping的时候,由于着急看效果,但是完全没注意serverip其实是没设置过的,所以会ping不通,因为在配置文件的宏中只添加了默认都会需要用的IP、子网掩码和网关,MAC地址都是执行ping测试时系统提示没设置才补的,调试ping的时候没留意看开发板网口灯亮没亮(因为桌子小而且为了插拔卡方便所以把开发板的SD卡接口这边朝向了自己,而网口刚好在另一侧所以刚好不方便观察,但是开发板网口灯只会在执行ping过程中闪烁,闪烁的时间比较短暂,前期ping不通的时候忙着往别的原因排查但其实忘了这里原本就有一个很好的排查现象)。


在这次过程中,其实折腾的时间相对多的是id读不到 (一直为0x00000000),ERROR: resetting DM9000 -> not responding的这个现象,这个现象网上也有说过解决办法,那就是修改时钟配置的SROMC配置,但当时改了烧进去现象没变(按说改完这里应该就可以的了),然后再想是不是漏宏了,改了一下把IP、子网掩码和网关宏加了、BANK1的宏没漏、要禁用EEPROM的宏业没漏,然后烧进去现象还是没变化,然后看到网上文章提示说要留意网口灯,所以这时专门留意了一下,发现网口灯会闪,所以ping命令能执行,那就应该不是移植不全的问题,再下来,从入口函数开始细查,看到dm9000_reset()函数开头第一句有一个DM9000_DEBUG()宏,已经准备做打印信息的想法了,而且这时刚好看到别的文章提示可以开打印信息,所以尝试了一下开启打印宏,烧进去结果发现现象还是没变,这时已经能发觉问题所在了,打印信息应该变多的,但是现象还是原来的现象,说明什么,说明烧的uboot不是最新的改完的那份,所以往前翻uboot的时间打印信息,发现是同一份(因为打印指向的都是同一个时间),这时想起来可能和直接拔插SD读卡器,ubuntu中没有识别到卡已经拔走了,于是ls /dev/sd*打印了一下,sdb分区竟然还保留着,明明现在都没插着卡,所以每次烧录都烧进去那个旧的挂载点了(但可能这里就疑问了呀sdb名称没变呀,再插入卡会发现sdb1有出现而且是深颜色的,不过sdb还是浅颜色的,就是虽然是旧的sdb,即便名称没变其实应该没法烧进去)。


另外就是因为开发板端没有将ICMP的echo做到uboot中去,所以无论是PC还是ubuntu,在这一侧都是无法ping到开发板的,由于这个内容是在开发环境搭建时提及的,但是等这个时候真正试验起来已经有点想不起来了,所以当时还在疑惑为什么ping不到,然后就陷入了找答案的漩涡中;其实最后面查找原因的过程中发现,如果要看互相ping通其实也还是有办法的,就是在PC/ubuntu上准备ping开发板ip的命令(其实主要是ubuntu上会比较明显,因为ubuntu),然后点击发送,再在开发板串口终端这边发送ping命令去ping正在下发ping命令的PC(或者ubuntu),因为开发板ping主机是能通的,在通的这个短暂瞬间(也就是网口灯闪烁的这几秒)开发板tftp端口开放,等ping命令执行完开发板端tftp端口再次关闭,所以就能看到有互相ping通的过程。

2、由于开发板和笔记本PC的连接中间是用的USB转RJ45(绿联的AX8872C),但是这个USB转网口有个问题是,插上以后能自动装驱动,但是开发板插上网线连到它之后,它的USB再插入PC,会显示网络电缆被拔出(无论开发板是否上电),不仅是这款,以前用的一个USB转网口线也是这个现象,所以才买的现在这个绿联USB转网口就是为了排除这个问题,但是至少经过现在使用验证,其实还没有太多影响(不过还是要设置好桥接并且USB转网口这个转接线的网卡要和开发板在同一个网段下),其实一开始看到这个本地连接上显示的红叉,会自然而然地觉得可能用不了于是想着找找是什么问题导致或者有办法解决的没有,但可惜的是,并没有看到比较有效的答案,另一个原因是,虚拟机那边添加网络适配器,一般来说会通过“自定义(U):特定网络”这个下拉选项选择已经桥接的网卡,此时桥接的网卡旁边会有()注明是桥接的,但是实际却并没有,所以也在怀疑是不是这个USB转网口的红叉带来的影响。


另外就是测试tftp,因为ping只能通过开发板端向PC/ubuntu去ping,并且已经ping通,但是由于相反过程无法看到现象,所以一开始tftp测试时遇到无法下载也是没什么办法,后面查看网上文章提示到要关闭防火墙,因为服务端tftpd64是在windows上(而网卡方面能够选择作为载体的除了本身的无线网卡,但是不能选,因为是自动获取的,和USB转网口的网卡1.7、开发板1.130根本就不在同一个网段,所以就只能选USB转网口的这个网卡作为tftpd64服务端),所以尝试把PC的域网络、专用网络、公用网络防火墙全部关闭,再进行测试发现能够下载成功了,为了PC机的网络安全起见,防火墙还是要打开的,所以只能到防火墙高级设置里创建UDP入站规则,将tftp的69端口添加上去,另外就是,即便windows还没创建入站规则而且防火墙还是开启的情况下(但是ubuntu防火墙已经关闭),发现还是可以做到tftp下载文件到开发板的(不过开发板端env的serverip需要修改成ubuntu的ip),还有就是,无论使用以前旧的USB转网口(某宝不知名品牌买的廉价货)还是现在绿联的AX8872C,而uboot用的无论是九鼎配套给的那个还是现在自己做的这个,如果用tftp下载特大文件,例如200多兆的根文件系统(九鼎配套给的)到板子上,都会失败(具体表现就是下载过程提示符#一直打印但是没完没了,或者干脆打印的#有断层说明下载过程不流畅),而下载普通的kernel(因为相对小)来说则不成问题,所以从这里也想明白了为什么九鼎官方是采用fastboot方式烧机而不是用uboot的tftp,因此怀疑后续还是要选择移植fastboot方便根文件系统的下载(可能前期根文件系统小的时候还可以下但后面大了之后就不一定 了)。


关键字:移植 引用地址:x210-2023-03-23

上一篇:x210-2023-03-31
下一篇:x210-2023-03-20

推荐阅读最新更新时间:2026-03-23 10:57

嵌入式Linux系统中MMC驱动管理技术研究
引 言 MMC(Multitmedia Card)是一种体积小巧、容量大、使用方便的存储器,目前在手机等嵌入式系统中有着广泛的应用。MMC通过卡内的一个集成片内控制器对MMC卡进行控制和管理,当主机正确地驱动MMC卡后,就可以像磁盘一样方便地存取数据。本文所研究与实现的Linux驱动程序,以Intel XScale的PXA250为硬件平台,在遵循MMC卡通信协议规范的基础上,实现了卡的底层读写。然后对传统的块设备驱动程序中的单块读写进行了改进,实现了集群读写技术,提高了卡的读写速度;同时增加了电源管理功能,满足了嵌入式系统低功耗的需求;增加了即插即用功能,方便了用户的使用。 1 MMC卡驱动程序的体系结构 MMC 卡仅通过
[单片机]
嵌入式Linux系统中<font color='red'>MMC</font>卡<font color='red'>驱动</font>管理技术研究
RT-Thread nano在STM32F103上的移植指南
准备工作 裸机工程模板 移植之前需要准备一个STM32裸机工程,这个裸机工程要能使用串口发送数据、在串口中断中接收数据。因为后面移植之后主要用串口来验证程序。 RT-Thread 准备 使用的是3.1.5版本。下载地址:RTT官网 下载完成后,我们打开跟我们最相近的工程模板:stm32f103-msh 打开工程后,打开rtconfig.h的文件路径,把rtconfig.h复制到裸机工程中(如下图)。按这个方法,再把board.c复制到裸机工程中。 最后把RT-Thread中,除了bsp文件夹全部拷贝到裸机工程。 RT-Thread添加到工程 接下来要把复制过来的文件添加到工程,需要添加到工程的文件如下:
[单片机]
RT-Thread nano在STM32F103上的<font color='red'>移植</font>指南
iTOP-4412开发板-Android4.4-Bluetooth移植文档
1.1 概述 近期需要把 Bluetooth 移植到 iTOP-4412 开发平台,查阅了相关资料,经过一段时间 的研究、调试,终于成功的将蓝牙功能移植到了开发板上面,这里笔者记录移植过程及注意 事项,方便以后工作需要。 iTOP-4412 开发板的 Bletooth 模块与板卡之间的连接采用 UART 接口,Bletooth 硬件模块使用的是MTK的MT6620芯片,MTK提供了Android4.0及Android4.4driver, Porting Guid,有了这些就为我们的移植工作做了总体性的指导。 但是仅仅有 MTK 提供的文档还是远远不够的,毕竟硬件接口定义不同,kernel 版本也不同,Android层与MT
[单片机]
iTOP-4412开发板-Android4.4-Bluetooth<font color='red'>移植</font>文档
移植5.4内核到迅为I.MX6ULL开发板
本篇推文会加到后续的文档里面,另外等QT视频录制完成以后,就开始更新终结者驱动和系统移植的视频,后续的驱动移植教程和视频也全部会在本次移植的5.4内核上进行讲解和录制。大家也可以趁着端午节亲手移植感受下。 获取Linux内核源码 NXP官方提供了I.MX6ULL的Linux内核源码,我们可以使用git来获取Linux 5.4.3的内核源码(为了大家学习方便我们给大家提供了下载好的核源码,后续会保存在光盘资料的“i.MX6UL终结者光盘资料5_uboot linux源码”目录下“i.MX6ULL_Kernel_5.4.3.tar.bz2”)。 下面我们通过git下载5.4.3内核源码。输入以下命令获取源码: git clon
[单片机]
<font color='red'>移植</font>5.4内核到迅为I.MX6ULL开发板
STM32上移植nuttx操作系统
操作系统(Operating System),简称OS,是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。 根据计算机组成原理,计算机由CPU(运算器+控制器),存储器,输入,输出设备组成。 根据操作系统原理,OS由调度,内存管理,文件系统,进程间通信,计算机网络组成。 CPU对应OS的调度(Schedule); 内存对应OS的内存管理(Memory Management); 存储器对应OS的文件系统(File System); 输入/输出设备对应OS的驱动,也可以认为是文件系统(一切皆文件); 进程间通信(Internal Process communacation)是OS提供给应用程序的通信方式。 OS的
[单片机]
STM32上<font color='red'>移植</font>nuttx操作系统
ubuntu下安装nuttx移植到STM32开发环境
第一步:下载一个Ubuntu操作系统,安装到VMware workstation 第二步:打开终端(Ctrl + Alt + T) 输入指令: 1、Ubuntu:~$ apt-get update                    //更新包 2、Ubuntu:~$ sudo apt-get install gcc-arm-none-eabi         //安装编译器 3、Ubuntu:~$ cd ~/       4、Ubuntu:~$ mkdir nuttxSpace                  //创建工作路径 5、Ubuntu:~/nuttxSpace$ git clone https://bitbuc
[单片机]
ubuntu下安装nuttx<font color='red'>移植</font>到STM32开发环境
i.MX6ULL终结者Debian文件系统的构建i.MX6ULL 移植Debian文件系统
1、安装Qumu和Debootstrap 由于我们是在 Ubuntu 上构建的debian的文件系统,所以安装这俩个工具我们直接使用apt-get命令即可。命令如下: apt-get install binfmt-support qemu qemu-user-static debootstrap 如图 1.1所示: 2、抽取Debain文件系统 抽取文件系统我们使用的是debootstrap命令,我们执行以下命令即可从debian下载源中获取到文件系统: debootstrap --arch=armhf --foreign buster root https://mirrors.tuna.tsinghua.edu.c
[单片机]
i.MX6ULL终结者Debian文件系统的构建i.MX6ULL <font color='red'>移植</font>Debian文件系统
迅为i.MX6ULL开发板-移植OpenCv2.4.9-QT程序编译
1.将提供的 QT 文件下载完成后,放到 /home/topeet/opencv2.4.9/opencvinstall/文件夹下。进入/QT/demo 目录下。我们打开 opencv_pic.pro 工程来看。 Ubuntu# vi opencv_pic.pro 注意 INCLUDEPATH 需要修改为自己 OpenCV 安装文件夹下的 include 路径!lib 的目录必须是/QT/demo 目录的上两级目录。 2.搭建完成后。在 Ubuntu 终端执行下面的指令来使能 Qt 交叉编译的环境变量。 Ubuntu# source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-c
[单片机]
迅为i.MX6ULL开发板-<font color='red'>移植</font>OpenCv2.4.9-QT程序编译
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved