- 博客(10)
- 问答 (1)
- 收藏
- 关注
原创 AM335x片上ecap驱动移植
基于AM335x移植ecap驱动,驱动出至一下链接。https://github.com/teknoman117/beaglebot移植完成后出现不能操作相关寄存器的现象,后面发现是ECAP的时钟没有打开,现象如下。在ecap的上游设备pwmss,加入以下电源管理的代码,让其父设备处于一直开启的状态解决问题。当然可以尝试在ecap驱动中加入对其父设备的电源管理语句,我没有尝试是否可行。am335x中ecap的描述如下。上述简单描述了ecap移植遇到的问题,可以参考一下链接进行查阅。移植的关键
2022-02-03 23:35:28
505
原创 AM335x修改串口后出现串门数据丢失问题
原来ttyS3是系统信息打印,后面改成普通串口,测试发现出现数据丢失问题。后面经过半天的查找,发现系统服务中会自动启动一个serial-getty@ttyS3.service,把该服务删除后测试正常。原因分析:该服务会在系统启动时自动加载,不断检测ttyS3上的输入信息,遇到\r\n时会检测输入的信息,故导致输入数据丢失。...
2022-02-03 23:21:09
407
原创 AM335X修改系统默认RTC(其他的linux系统类似)
基于AM335x,让运行的系统支持DS1672芯片。首先使用MENUCONFIG配置,选择上DS1672的驱动。其实在设备树对应的I2C节点下添加DS1672的节点。我原来使用的的是DS1340,现在换成DS1672.此时驱动能正常运行。但是系统的默认RTC还是会指向RTC0,DS1672注册的是RTC1,可以修改以下配置,把系统RTC指定为RTC1。假如不在MENUCONFIG中配置也可以通过内核源码目录下的.config修改,把rtc0改成rtc1.到此开机启动之后就可以从rtc1读取
2022-02-03 23:11:03
1357
原创 TI芯片(335x、437x、572x)uboot设置logo居中
TI芯片使用的Uboot是同一个代码,我们先查看环境变量中的logo设置。查看logo显示代码,bmp_display的原型如下。从上面代码可以看出,需要在uboot环境变量修改相应显示的位置即可。测试现象。...
2022-02-03 22:44:13
503
原创 am57xx修改uboot和kernel打印串口
TI的am57xx系列芯片,基于uboot-2017修改串口。先说说理论知识,上电时会自动运行固化到片内ROM的代码,固化代码读取uboot的MLO,MLO接着读取u-boot.img。到此时就进入了可以配置uboot环境变量的阶段了。接着往下走就是根据不同的引导方式读取内核和设备树,最后启动内核。我们先在要把串口打印信息从uart3修改到uart2,支持从MLO阶段就打印信息。接下来就是操作步骤。1.修改路径为board/ti/am57xx/Kconfig的文件。把default改成2。2.在路径
2021-08-10 23:21:56
840
原创 全志打包过程(基于T3)
本文使用的SDK是全志T3的lichee,其他的SDK请自行确认是否一致。一般的SDK使用的标准“三件套”分别是uboot、dtb文件、kernel文件,uboot负责加载设备树和kernel到内存并引导程序。但是全志把这个“三件套”封装成了一个img文件,这个img文件并不是标准的img文件,而是由fex文件“堆积”在一起的。fex关于fex文件可以查看最后的链接。现在我们来分析一下编译好后img打包的过程,当我们在全志的SDK输入./build.sh pack时,脚本会执行路径为tools/pack
2021-07-18 22:45:27
2711
原创 FPGA下载(kintex-7)
1.Vivado下载bit、bin文件。改下载方式只能在RAM中运行,断电后需要重新加载2.使用xsdk下载,该下载可以固化到SPI,断电再上电也可以使用。使用xilinx JTAG连接好电脑与开发板后按照红色框所示配置好,然后点击Program即可。其中flash Type根据不同的FPGA器件选择不同的类型,当前使用的是K7,所以选择截图中的选项。3.使用xsdk合成download.bit文件,该文件把vivado生成的bitstream文件,xsdk生成的elf文件和mmi文件合成一个文件。
2021-06-10 20:15:55
1466
转载 Linux串口通讯无法传输0x13 0x03问题
过程:最近使用Linux串口进行16进制的原始数据进行通讯,发现在传输特定的16进制数据时(例如0x03、0x13),串口不再输出,修改代码原始数据后发现串口通讯正常。原因:Linux串口传输数据时,串口本身会对相应的数据进行识别,并对串口进行配置,从而导致了串口没有输出的情况。解决办法:在打开的文件描述符中添加如下代码。struct termios options;if ( tcgetattr(fd,&options) != 0) { perror("SetupSerial 1");
2021-05-25 21:26:47
1182
1
原创 88E15xx寄存器配置
我们先来了解一下88E15xx官方文档的寄存器类型,该类型决定我们要做什么操作图中可以看到如果寄存器中有Retain或者Update都不在软件重启之前生效。这就意味着你在设置寄存时看到这两个标识需要额外进行PHY的软件复位。那么什么寄存器在哪里写复位信息呢?那就看下图:上面这张图告诉你,你要想哪个寄存器设置生效,那么你就需要在对应的复位寄存器中的对应bit写1,写完后PHY会自动重启。重启后你设置的值就会生效。可能有读者会不明白0_0.15、0_0.15、20_18.15是什么意思。下面我就来解析
2021-05-10 21:51:04
3127
4
原创 BLE框架
最近一直在看关于低功耗蓝牙(BLE-bluetooth low energy)的书,在这里写下学习笔记,希望这个笔记也可以帮助到在学习BLE的同学吧。 首先我先介绍一下BLE的由来。BLE指的是在蓝牙4.0规范下的LE(low energy)蓝牙,这个蓝牙可以使用更少的能耗实现传输少量数据,而其他蓝牙规范如下:蓝牙1.0为基本码率(Basic Rate,BR),物理层数据速率为...
2019-02-15 10:27:30
834
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人