- 博客(61)
- 收藏
- 关注
原创 fmql之Linux flash读写
ubuntu在板卡启动后,会占用部分flash的内存。目前用的是256Mb的flash,型号是w25q256。ubuntu系统和启动文件(BOOT.bin等)都放在SD卡。前者放在SD卡的第三个分区,后者放在第一个分区。现在要进行flash和SD卡的读写测试。【代码贴到最后了】
2024-10-29 14:58:16 846
原创 fmql之Linux CAN
安装can-utils安装包(参考fmql官方教程),把需要的d可执行文件如cansend、candump等拷贝到开发板ubuntu的/user/lib/out/bin目录下(该目录参考正点原子教程)。配置dts设备树(vivado配置的话,生成的dts会有can的内容)安装ZCANPRO,即CAN-TOOL的驱动(否则USBCAN-E-U识别不到CAN设备)CAN的相关Shell命令在“其他命令(重要)”部分,配置can0。
2024-10-15 11:39:24 857
原创 fmql之Linux Uart_PS/PL
(命令不唯一)配置uart: stty -F /dev/ttyPS1 ispeed 115200 ospeed 115200 cs8发送数据: echo "send_data" | sudo tee /dev/ttyPS1接收数据: cat /dev/ttyPS1。
2024-10-15 11:39:12 356
原创 fmql之Linux下AXI GPIO、MISC
正点原子第41章。要使用AXI GPIO,就要在vivado工程中,添加相关的IP。然后dts会自动生成相关的AXi GPIO的设备树内容。
2024-10-09 14:25:17 372
原创 fmql之字符驱动设备(3)-并发与竞争
1. Linux是一个多任务系统。当多个任务共同操作同一段内存或同一个设备(共享资源)时,容易出现并发与竞争的情况。所以要处理对共享资源的并发访问。2. 并发与竞争出现的几个主要原因:多线程并发访问;抢占式并发访问;中断程序并发访问;SMP(多核)核间并发访问,etc。3. 在编写驱动的时候,就要注意避免并发核防止竞争访问。不然,会给后期埋下隐患。4. 什么是共享资源,哪些内容需要保护。如,全局变量,设备结构体,etc。要弄清楚需要保护的内容或数据。5. 几种处理并发和竞争的方法:原子操作;自旋锁。
2024-09-27 12:01:14 1038
原创 fmql之linux启动文件大小
想要从flash启动linux,但是flash同时也要存储数据,所以看看启动文件占多大内存。目的:flash放启动文件,,且自启动。,MIO配置为SD卡启动flash所需存储空间:BOOT.bin的物理大小。P.S 后面试了一下,如果是SD卡启动,可能是需要image.ub文件的。只有BOOT.bin和image-mini.ub和ubuntu系统的话,会卡在uboot启动,kernel不会启动。1. image.ub展开到DDR,占用DDR多少空间?2. 如何分配SD卡空间。
2024-09-26 16:46:50 577
原创 fmql之驱动程序编写(首次)
看了正点原子的zynq系列的Linux开发指南(pdf和视频均有),因此从最简单的程序开始。学习驱动程序编写之前,要先学习uboot,kernel等内容(操作系统):(第三期视频)如USB的wifi模块,就不只是网络驱动。可能的原因:没有交叉工具编译;前期环境配置没弄好(见正点原子第三期视频)进入petalinux安装目录:source setting.sh。比较难,且比较多的是第一种,字符驱动。KERN_DIR为kernel的目录。驱动程序开发:(第四期视频)因此,跟着视频一起来学习吧。
2024-09-20 10:03:48 419
原创 fmql之ubuntu添加dhcp服务
因为修改了buildroot配置后,没有输入命令“make busybox-dirclean”网口连接路由器,然后发现路由器分配了ip,但是板卡没有配置。上面dhcp都不能使能,不然就无法启动kernel。按照官方指示:【在文末】
2024-09-18 08:52:50 328
原创 ZD25Q512AYIGY读写测试
zd25q512芯片是2×256M,理解为两片256M。目前关注到的几个寄存器,都和Winbond的地址位一致。ZD25Q256只多了Software Die Select。只有在3字节读写(ADS=0)的情况下,才能根据地址进行低128Mb和高128Mb的读写(0xh - 0xff_ffffh,0x100_0000 - 0x1ff_ffff)(扩展的地址为bit24)。要写入扩展地址寄存器位时,必须先执行写使能(06H然后再发送C5H,写入扩展地址注册表数据字节来输入指令。
2024-09-11 15:30:00 696
原创 fmql之ubuntu移植
其中,format_emmc_ext4.txt对emmc的分区是512M(放上述文件)、512M、剩余内存(放ubuntu)。重启后默认进入kernel,也就是说,uboot下的setenv要每次都设置。教程:99_FMQL45_大黄蜂开发板跑ubuntu18.04.docx。因为没有emmc,所以把ubuntu放到SD卡中,从SD卡启动。分3个区:(参考format_emmc_ext4.txt)输入第二个命令后会自动启动ubuntu。目的:放到SD卡中启动ubuntu。可以在setenv之后输入命令。
2024-09-11 11:18:53 568
原创 v500大程序之IIC调试
尖峰后面的第一个SCL高电平为返回应答信号,所以红色框内的周期是在这之后的,即传输data——发现少一个周期,只写了7bit数据。虽然写的是IIC,但其实在system bd中并没有勾选IIC0、IIC1,而是根据IIC协议写了相关的函数(不是我写的)。发现,写位置前是正常的(尖峰位置),而写位置后的尖峰太靠后了,使data写入出现错误(目前这么理解。发现,每次写入数据(共3次),SDA都会有一个尖峰,目前认为它是应答信号。硬件配置(引脚,虚焊等),线路过长,速率配置/时序,主机复位,
2024-08-23 15:55:18 505
原创 fmql之linux入门
1.修改设备树,切记勿修改fmsh-psoc.dtsi)/{// 100k Hzrtc@68 {//IDi2c-gpio的引脚要和原理图对上;rtc的compatible要和内核文件信息对上(厂商和芯片型号) (中间不能有空格)2.kernel启动信息中是否有i2c-gpio和rtc的相关驱动信息3.ubuntu启动后,输入命令,设置时间4.rtc芯片的compatible信息。
2024-08-23 15:54:25 809
原创 fmql之Linux移植
复旦微fmql的操作指南复旦微 FMQL Linux SDK实验(一)_procise生成的工程有用吗-CSDN博客复旦微 FMQL Linux SDK实验(二)_复旦微fmql 社区-CSDN博客ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_zynq linux-CSDN博客国产之路:复旦微调试笔记3:环境配置_复旦微fpga开发环境-CSDN博客。
2024-08-13 16:14:49 1009
原创 fmql程序移植注意事项
把zynq的程序移植到fmql,因为软件不同(vivado与Procise;SDK与IAR),库函数不同,所以在移植过程中遇到些坑。记录下来,以便后续回看。
2024-07-31 09:59:25 591
原创 v500大程序之以太网调试
但是大神也没用过fmql。其中0xc代表中断应答(0x2a:CPU_ID=0,INTR_ID=0x2a)明明fmsh_gic.h声明,ethernet_interface.h声明,ethernet_interface.c定义。程序是能进三四次中断的,然后进行一次g_rcv_cnt++ ---> g_rcv_cnt --,然后就进不去中断了。bsp中移除mmu_table.s(但是不删除文件),在main.c所在的文件夹内添加 mmu_table.s。(啊这,没想到最后还是---可能是---中断配置的问题。
2024-07-19 17:01:23 611
原创 fmql之PL串口中断调试
调完PS_UART后,来调PL_UART(UART16550)因为fmql没有PL的库函数和资源,所以均用zynq(从库函数到代码)P.S 一定要学习 思路!!!!!!
2024-07-18 15:54:17 302
原创 fmql之PS串口中断调试★
比较有趣的是,这是官方的中断函数,在fmsh_uart.c。但是某两行编译不通过(?(应该是uart0配置了uart1_irq,所以设断点没进去,但其实应该是进入中断函数了)用的模板,应该程序也没有错误。txRemain,同理,它下面那一行也要这么改。【奇怪的是,用自己写的IrqHandler,就进不去,接着就是修改中断服务函数,让它能够记录不同中断情况。了(主要是接收中断)。,但是能发送,接收不到,并且无法进入中断。好吧,是中断函数和uart_x没对上。用了好几个工程去测试,都是如此。
2024-07-10 14:56:34 705
原创 V500大程序阅读(8)- Lwip & SD & Timer & 数据处理
导入原来的Timer.c & Timer.h,但是函数内容作了修改(根据PeripheralTest中的ttc_example.c)但是后续如果要用SD卡去进行存储和取用的话,需要把example的函数分开写。现在所有的操作都写在一起了。代码移植过去,PHY ID、speed协商等都没问题。Timer的irq在配置完就会进入,并且只进入一次。把之前测试的模板导入,成功。
2024-07-08 11:50:05 323
原创 FPAG之静态时序分析与时钟约束(1)
看了一周PL端的大程序,甚是复杂。所以来学学时序方面的基础知识。不然都不知道时序约束怎么通过。参考内容:正点原子FPGA静态时序分析与时序约束_V2.2.pdf《Xilinx FPGA权威设计指南 ——Vivado 2014集成开发环境》
2024-06-07 16:58:47 994
原创 fmql之CAN调试
报错:(没有如下宏定义所以SCU GIC是什么?(之后再学习)但是推测SGI_ID等价于INTC_DEVICE_ID ,CAN0_INT_ID等价于CAN_INTR_VEC_ID。修改xil_printf添加的头文件:删除的头文件:fmsh的头文件都没删。也没修改内容。添加的宏定义:因为gic的头文件内容差不多,所以zynq的头文件就没添加,用fmsh本来的,把函数名称修改成fmsh对应的(上面的宏定义)。
2024-05-31 17:13:40 881 2
原创 zynq之CAN调试
比较详细的介绍:(包括CAN相关概念&代码解析)Xilinx-ZYNQ7000系列-学习笔记(26):CAN总线_zynq的can通信-CSDN博客选择/**//**//**/波特率 baudrate = CAN_CLK / ((SYNCJUMPWIDTH + SECOND_TIMESEGMENT + FIRST_TIMESEGMENT ) * (PRESCALAR + 1))CAN_CLK在zynq IP配置界面设置。s32 Status;u32 Index;= NULL);
2024-05-30 16:02:33 1331 1
原创 zynq之UART
将UART 16550 IP中的sin和sout引脚导出,修改引脚名字为RS485_RXD和RS485_TXD;,输入连接UART 16550 IP的ip2intc_irpt,输出dout连zynq IP的irq。连接UART 16550的freeze,dcdn,dsrn与第二个constant IP;将AXI GPIO IP中引出的GPIO的引脚名字修改为RS485_DE。删除AXI UART 16550 IP的UART引脚。但是串口调试助手没有收到任何打印信息。Run Automation自动连线。
2024-05-29 15:12:28 589
原创 FPGA之tcp/udp
在调试以太网的过程中,考虑了vivado IP配置(管脚、reset等),SDK中PHY芯片的配置(芯片地址、自适应速率配置等),但是,唯独忽略了tcp/udp协议,所以在ping通之后仍无法连接。所以现在来学习一下tcp与udp的区别 ---- 为什么要用tcp而不是udp协议。百度安全验证。
2024-05-24 10:27:37 1242
原创 fmql之以太网调试记录
速率为100Mbps,那么读取到的SPEED即为100Mbps(自适应设置)。GMAC failed ----(官方)可能是PHY给的rx_clk不对,用示波器查看rx_clk是否正常【什么样算正常,什么算不正常?----(官方)如果GMAC loopback成功,PHY link timeout,是GMAC和PHY的通信出问题,重点检查硬件设计。lwip工程可以调网口。当然,硬件设计也很重要,所有的软件都是在硬件设计的基础上的。找了领导,领导说配置应该没问题,但是:(以下修改均根据硬件来)
2024-05-23 15:34:36 921 4
原创 fmql入门之对标zynq差异(1)
在看官方的入门教程(APPN101),发现软件不同带来的操作差异还是有一些的,记录一下在调试/移植代码过程中的问题。
2024-05-09 16:45:52 1564 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人