一,前言 我之前虚拟机配置的是NAT方式,不是桥接,然后Kernel及uboot都同nfs挂载。所以先改成了最简单的桥接方式的虚拟机。 二,ubuntu虚拟机设置 1,vmware先设置为桥接。 2,设置ubuntu14.04的静态ip地址 gedit/etc/network/interfaces 内容 autoeth0 ifaceeth0inetstatic address192.168.7.5 netmask255.255.255.0 gateway192.168.7.1 dns-nameservers114.114.114.114 3,ubuntu添加tftp 1)安装软件 s...

  2Nv1H5BMjysw   2023年11月19日   20   0   0 桥接nfs挂载Ubuntu

一,前言 总体来说我还是想用NAT虚拟机,所以基于开发板nfs挂载桥接虚拟机的文件系统环境搭建--Apple的学习笔记中的配置继续修改。 二,ubuntu虚拟机中nfs挂载设置 修改ip地址为192.168.112.11 添加路由端口sudogedit/etc/services最后添加mountd9999/tcpmountd9999/udp PC以太网2设置ip地址从之前设置的192.168.7.3改为192.168.7.5,就变成了之前的ubuntu地址了。 连接好网线,给开发板上电,这样以太网2就连接上了。 验证ubuntu可以ping通PC以太网2192.168.7.5,PC也可以p...

  2Nv1H5BMjysw   2023年11月19日   17   0   0 NAT开发板Ubuntu

一,前言 发现现在的uboot做的越来像linux驱动了,包括了设备树及其驱动模型。所以若复习设备树的话,在linux上学习和在uboot上学习是一样的,再加上我学习过了qemu仿真,所以想找到单步仿真调试方法。主要是am335x的调试器当时我焊接失败,所以只考虑仿真,另外发现stm32F407也有uboot支持,所以研究下了下,因为我有stm32开发板和stlink可以单步仿真,但是由于板子没焊接外部sram,否则我要删除relocate功能,基于学习的目的,我并不想大改而删除功能。 二,相关文章 1.解决ubootping不通的硬件问题--Apple的学习笔记 2.boot驱动模型中的常用...

  2Nv1H5BMjysw   2023年11月19日   20   0   0 uboot

一,前言 既然是复习设备驱动,第一步当然是做一个最简单的基于设备树的驱动applechar,然后insmod和rmmod使用下,接着要回忆下driver和device是怎么match的,且把相关结构体复习下。 看了下结构体发现有点忘记了,另外match的函数也忘记了。有些东西不需要死记硬背,通过代码分析的方法论找到它即可。就是在我自己的驱动的probe函数打断点,看谁调用的,不是就都找到了嘛! 二,源码分析 首先回忆到的设备驱动模型是在do_initcalls把注册的driver遍历进行找设备,主要是driver和devicematch。先要match,然后就probe了。我在qemu仿真v...

  2Nv1H5BMjysw   2023年11月19日   21   0   0 设备驱动

一,前言 今天我主要先分析下bbblack的relocate。至于为什么要分析这块内容,因为我个人理解,内存分布也是重要内容,最关键的是这些内容我3年前分析过TQ2440的,但是没分析过bbblack的,所以补上。 二,实践 先在board_f.c中添加define_DEBUG1就支持debug函数打印信息了。 U-Boot2023.10(Oct27202319:36:30+0800)AppleCai'sam335Board U-Bootcode:80800000->808807B8BSS:->8088BEE8 CPU:AM335X-GPrev2.1 Model:TIAM33...

  2Nv1H5BMjysw   2023年11月13日   20   0   0 uboot重定向

一,前言 昨天了解了qemu中虚拟开发板的内存创建,接着再了解下中断创建和使用。 二,分析 昨天看了flash初始化,后面的我理解应该一样,接着发现sram初始化后,本来以为和flash是一样的,结果多了如下一句,通过注释也很好理解就是把1个bit展开为了1个byte,这样1M的sram变成了32M空间。 //Bitbandthe1MBfrom 0x20000000-0x200FFFFFareato //32MBat0x22000000-0x23FFFFFF. cortexm_bitband_init(mem_container,"sram-bitband",0x20000000); ...

  2Nv1H5BMjysw   2023年11月12日   25   0   0 qemu

一,前言 最近准备学习一轮驱动开发,所以把bbblack开发板翻出来检查下是否还正常,也需要重新搭建下环境。 二,实践 A.板子跑起来 下载镜像方法A:在官网http://beagleboard.org/latest-images中下载sd卡的4GB镜像,用etcher来烧录镜像到sd卡中。不需要解压,直接加载am335x-debian-11.7-iot-armhf-2023-09-02-4gb.img.xz即可,导入后它自己会解压,可以看到400M变成了3.77G。烧录时间约15分钟。所以SD卡需要大于4G空间。截图如下 硬件板子+USB线供电+USB转串口,使用串口工具MobaXter...

  2Nv1H5BMjysw   2023年11月12日   21   0   0 linux开发板环境搭建bb black

一,win10版本的openocd+stlink调试环境搭建 1,在官网下载openocd的win10版本解压即可,arm-none-eabi的win10版本解压即可,然后添加到环境变量。 2,stlink连接开发板,且插入stlink。 3,打开一个cmd输入命令,然后可以看到正常识别到stlink,且等待gdb的3333端口。 openocd-fD:\program\OpenOCD-20231002-0.12.0\share\openocd\scripts\interface\stlink.cfg-fD:\program\OpenOCD-20231002-0.12.0\share\ope...

  2Nv1H5BMjysw   2023年11月05日   30   0   0 Ubuntuopenocd远程调试

一,前言 之前win10的openocd由于没添加loadelf导致无法调试,所以我就在ubuntu中也装了openocd环境,这样就不用依靠win10了。ubntu14.04无法编译openocd,所以换成ubuntu18.04安装openocd。 二,ubuntu18.04安装openocd及gdb调试 1,下载 gitclonegit://git.code.sf.net/p/openocd/codeopenocd 2,安装 sudoapt-getinstallbuild-essentialpkg-configautoconfautomakelibtoollibusb-devlibu...

  2Nv1H5BMjysw   2023年11月05日   34   0   0 openocdUbuntu

一,前言 我在uboot支持的cortex-M4内核启动流程分析--Apple的学习笔记中就说过了,我计划要单步调试uboot,但是我只有stlink,所以要基于openocd的gdb来调试,所以就做了尝试,花费约2天时间,虽然做了些无用功,专门还装了ubuntu18.04,且基于ubuntu还安装了openocd这些其实都无用的,但是就是这些过程,让我了解了openocd这些命令的使用方法,最终我才能在win10上安装openocde,然后通过win10的vscode通过ssh连接ubuntu进行gdb单步调试环境搭建成功。 二,win10openocd搭配ubuntu中的vscode调试 ...

  2Nv1H5BMjysw   2023年11月05日   26   0   0 vscode远程调试openocd远程调试

一,前言 openocd+stlink的vscode远程gdb调试环境搭建完成了,那么用吧,串口也不连接了。用自带的configs/stm32f429-discovery_defconfig进行的编译,然后就直接调试了。 二,问题记录 问题1:board_init_f进入fdt初始化就进入hang。答:因为fdt是分离的但是我并没有下载到某个地址,于是先配置为嵌入到uboot来解决。 问题2:serial_init初始化一路调用直到configure_clocks函数中,最后while1卡死 /EnabletheSAIPLL/ setbits_le32(®s->cr,RCC_CR_PL...

  2Nv1H5BMjysw   2023年11月05日   25   0   0 stm32uboot

一,前言 如何能快速知道哪些c被编译到boot了。通过看编译信息,通过看编译完成后的ouput文件夹中的o文件,能否直接copy这些c文件到某个文件夹中,这样搜索看代码定位比较容易。若makefile自己有全部的c路径,那么我做个脚本后处理下,copy这些路径的c即可,另外,makefile居然有复制o文件,那么我只要找到它的位置,再加一句copyc文件即可,不过这是编译过程中copy会浪费点时间。 二,Makefile复习 常用关键字含义 $<第一个依赖文件名。 $?所有依赖文件中比目标文件新的文件列表。 $^目标文件在本规则中的所有依赖文件,省略了重复的依赖。 $+目标文件在本...

  2Nv1H5BMjysw   2023年11月05日   25   0   0 ci目标文件搜索

一,前言 既然是第二轮学习,当然要比第一轮增加深度,获取更多技能和通用方法论。之前我想通过代码关闭relocate功能,结果一尝试就复位了,看来没我想的简单,还是先了解下relocate的代码。 二,源码分析 调用前r0有传参为gd->relocaddr,也就是一个指针地址保存在r0。 arch/arm/lib/crt0.S ldr r0,[r9,GD_RELOCADDR] /r0=gd->relocaddr/ b relocate_code relocate_code的整个过程分析,关于我的理解都添加了注释。 arch/arm/lib/relocate.S ENTR...

  2Nv1H5BMjysw   2023年11月05日   29   0   0 uboot汇编源码分析重定向

一,前言 我之前一篇《uboot的重定向汇编》文中说明有一个不理解的疑问项,我需要获取更多理论知识支撑及做实验来理解验证,我先快速的看了《程序员的自我修养》前4章节,于是又了解了些重定向的细节。 二,对uboot重定向继续实验来解惑 我想做的一件事就是先确认之前有0x17,重定向后无0x17了,变成0即可。 于是我重新开始调试,目的是看下copy后的数据信息是否有0x17若没有,是否值为0。发现0x7ff55021居然有值,不是我想想中的0,这段地址不是没人用吗?我再仔细看看这个地址,如下图,我突然意识到这个地址不就是image搬移过去的开头吗?而我一直理解的是image结束后的地址,也...

  2Nv1H5BMjysw   2023年11月05日   27   0   0 符号表重定向绝对地址

一,前言 10多年前买过一本圈圈教你usb,然后自己移植了代码到自己焊接的单片机最小系统,当时连原理图都是我自己画的,现在原理图软件已经不知道怎么用了,所以usb协议基本也忘记了。居然配置了usbhost那么简单,这样感觉都没有学习过什么,我还是希望要雁过留痕。所以下载了wiresharkusb抓包玩了下,百度也看了别人的usbD+和D-的抓包。但是还是需要以了解协议为主。 二,学习笔记 现在都是typec或usb3.0,但是我依然选择学习usb2.0协议,因为我今天的目的只是要大概了解而已,所以学习最简单的,最重要的内容即可,这也就是当初我学习Linux0.11源码的目的是一样的。 1.us...

  2Nv1H5BMjysw   2023年11月02日   25   0   0 抓包usb协议

一,前言 之前看到关于设置gpio有多好api,这个c中的api可以,那个c中的api也可以,感觉有些混乱。所以我又细看了下,发现根本原因是我把uclass中的driver和uclass_driver弄乱了。 二,分析 1.device_bind_common中会创建device,其中name是哪里来的? 答:其实就是driver结构体中的name成员值。 a) dm_scan dm_scan_plat lists_bind_drivers bind_drivers_pass device_bind_by_name device_bind_common b) dm_init ->d...

  2Nv1H5BMjysw   2023年11月02日   25   0   0 设备树uboot

一,前言 之前uboot没配置过usb,但是现在uboot基于DM模型基本和linuxdriver类似了。那么为了学习linuxdriver,我可以先学习uboot来做技术储备也是一样的。而且usb在uboot上应该也有用武之地,所以有必要进行刻意练习。 二,分析 1,之前对发现driver用了wraper的方式来打包进行绑定,我理解唯一的好处就是代码看起来更加模块化,在bind函数中对子node进行绑定driver。 U_BOOT_DRIVER(ti_musb_wrapper)={ .name ="ti-musb-wrapper", .id =UCLASS_MISC, .of_mat...

  2Nv1H5BMjysw   2023年11月02日   22   0   0 设备树ubootusbhost

一,前言 开始玩所有板子一般都是先点灯,比如我可以在汇编中点灯,可以在board_init中用writel写寄存器点灯,当我要进一步熟悉下设备树驱动模型,不管学习linux还是学习uboot这块我理解类似,所以我要通过添加设备树及配置开关来实现默认打开led0和led1的功能。 二,实现的过程 1,先有了dts信息,我从其他TI的dts中copy来的,然后按原理图修改了pin脚。 leds{ compatible="gpio-leds"; pinctrl-names="default"; pinctrl-0=<&led_gpio_pins>; led0{...

  2Nv1H5BMjysw   2023年11月02日   23   0   0 设备树led

一,前言 对于通用的流程,我需要形成闭环的代码理解,验证我理解的准确性。于是我选择用调试的方法来看数据流,用qemu来仿真,vsocde来调试,但是不能仿真am335。所以用了qemu支持仿真的v9。 二,过程记录 1,编译uboot makeARCH=armCROSS_COMPILE=arm-linux-gnueabihfdistclean rm-rf./v9 makeARCH=armCROSS_COMPILE=arm-linux-gnueabihfO=v9vexpress_ca9x4_defconfig makeARCH=armCROSS_COMPILE=arm-linux-gnueab...

一,前言 既然下载了最新的uboot版本,那么就玩玩吧,先要定制自己的板子。 二,问题分析及解决 1,出错信息 U-BootSPL2023.10(Oct19202319:58:50+0800) TryingtobootfromMMC1 U-Boot2023.10(Oct19202319:58:50+0800)AppleCai'sam335Board CPU:AM335X-GPrev2.1 Model:TIAM335xEVM DRAM:512MiB Core:150devices,13uclasses,devicetree:separate NAND:0MiB MMC:OMAPSD/MM...

  2Nv1H5BMjysw   2023年11月02日   18   0   0 ubootDM
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~