fmql之linux入门

成功搭载ubuntu了,所以接下来要编写设备树了。

之后再运用外设。

设备树

【zynq和fmql的设备树编写方式、语法等是一样的吗】

设备树要修改system-user.dtsi文件,目录如下:

fmsh-psoc.dtsi中有很多外设的信息,但都是disable

对于要用到的外设,在system-user.dtsi中,把status改成“okay”即可。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_zynq linux-CSDN博客

https://www.cnblogs.com/han-guang-xue/p/16115559.html

pl.dtsi文件是和vivado工程对应的PL端资源:

详细说明:

关于ZYNQ搭载嵌入式操作系统_zynq phy挂载-CSDN博客

 尝试修改

  • 为什么不能include fmsh-psoc.dtsi?(该文件是fmql的PS资源设备树配置)

引用之后:

(换成#include也不行)

难道要在system-user.dtsi里重新写一遍?        ——不需要

或者直接在fmsh-psoc.dtsi里修改?                  ——不建议

  • 把fmsh-psoc.dtsi内容全cpoy到system-user.dtsi里,然后只把uart1的status改成okay。

(其实并不需要这样做)

PS端包括:(所需)global timer,gmac0,qspi flash0(内存可能需要修改),can0,uart0,uart1,SD,iic(模拟iic),watchdog,ttc0,

PL端包括:(可能全部需要自己写?)uart16550,bram,etc。

sysmon和intr呢?

---PL端也不需要自己写,都在pl.dtsi里面。

PL端dtsi生成:https://m.eeworld.com.cn/bbs_thread-1131007-1-1.html

那么问题来了,fmsh-psoc.dtsi里全部都是status = "disabled"

要修改system-user.dtsi还是直接修改fmsh-psoc.dtsi?

以及是否可以 /include/ "pl.dtsi"

(PL端的引脚配置需不需要?)

【以上内容是本人最开始接触设备树的想法,经过几天的信息收集,已经不这么想了】

gmac

修改mac地址:(前面加0x的话就会报错)

驱动程序

.h文件位置:

Linux驱动入门——编写第一个驱动_linux怎么写驱动-CSDN博客

设备树语法:

设备树文件的调用关系_dtsi文件-CSDN博客

 i2c

模拟iic(官方有pdf教程)(看教程是很简单的事情,但是也花了我两三天时间)

.dtsi中添加以下内容:

// i2c - gpio
	i2c_gpio0: i2c-gpio-0{
		compatible = "i2c-gpio";
		/*MIO56-SDA, MIO55-SCL*/
		gpios = <&portc 2 0
			 &portc 1 0 >;
		status = "okay";
		i2c-gpio,delay-us = <5>; // 100k Hz
		#address-cells = <1>;
		#size-cells = <0>;

		rtc@68 {
			compatible = "nxp, ds3231";
			reg = <0x68>;	//ID
			status = "okay";
		}
	}

发现了,报错的原因是两个"}"后面都没有";"

kernel编译已经有了:

但是还是不行:

 

难道是kernel还没配置好?

看了一下官方pdf,用的是MIO48、49。而我们的电路板用的是MIO55、56,是EMIO了,所以是不是还要配置为EMIO?

看看怎么配置。

试试看:我使用过的Linux命令之hwclock - 查询和设置硬件时钟 - Bash @ Linux - ITeye博客

https://www.cnblogs.com/taosim/articles/3287490.html

iic:

Linux内核驱动:gpio模拟i2c驱动_i2c-gpio-CSDN博客

可行:

uboot使用软件i2c(IO模拟I2C)_mt7621的i2c-CSDN博客

但是每次断电启动后都需要再配置吗,还是以后就不需要了?

hwclock是否可用?

https://www.cnblogs.com/schips/p/xilinx_zynq_linux_config_rtc_with_dts.html

把.dtsi里面的rtc也改成"dallas,ds3231"试试:没用。

找linux源码目录下的.txt文件(绑定文档)

发现rtc的cpmoatible属性写错了,应该写"maxim,ds3231"而不是"nxp, ds3231"(中间不能有空格)

改了之后还是不行,发现kernel:

只有i2c-gpio,没有rtc

因为IO给的value是1,改成0

 

可以了!(为什么是ds1307而不是ds3231?)

总结

1.修改设备树system-user.dtsi,切记勿修改fmsh-psoc.dtsi)

/{
    i2c_gpio0: i2c-gpio-0 {
		#address-cells = <1>;
		#size-cells = <0>;

		compatible = "i2c-gpio";
		// MIO56-SDA, MIO55-SCL
		gpios = <&portc 2 0    
			     &portc 1 0 >;
		status = "okay";
		i2c-gpio,delay-us = <5>; // 100k Hz
			
		rtc@68 {
			compatible = "maxim,ds3231";
			reg = <0x68>;	//ID
			status = "okay";
		};
	};

};

i2c-gpio的引脚要和原理图对上;rtc的compatible要和内核文件信息对上(厂商和芯片型号) (中间不能有空格)

2.kernel启动信息中是否有i2c-gpio和rtc的相关驱动信息

3.ubuntu启动后,输入命令,设置时间

4.rtc芯片的compatible信息,找了好久都没有找到内核文件中正确的写法(因此才会写成dallas, ds3231中间还有空格—__—)

硬件信息在linux源码下:

gpio

root登录后:

cd /sys/class/gpio                GPIO部分

ls -l                                      看看有哪些gpio,根据其地址判断引脚        (字幕为小写的L)

(目前没有AXI_GPIO)

也就是说,0xE0003000的MIO[0]为gpiochip480,一直到MIO[31]为gpiochip511

bank地址

Bankaddrgpiochip
A0xE000_3000480 - 511
B0xE000_3100458 - 479
C0xE000_3200426 - 457
D0xE000_3400394 - 425

命令

添加设备接口命令        echo num > /sys/class/gpio/export

                                        num为gpiochip数字

删除设备接口命令        echo num > /sys/class/gpio/unexport

编辑gpio的信息:

cd /sys/class/gpio/gpionum        (num仍未gpiochip数字,如500)

ls -l

u-boot下操作

在启动linux时随便按键盘上的某个键,就会进入u-boot下:

uart

qspi flash

cat /proc/mtd                查看qspi flash分区

hexdump -C -n 64 /dev/某个分区        读该分区,长度为64个字节

echo "写入flash的字符串内容"

ZYNQ-Linux开发之(七)国产化复旦微电子FMQL平台uboot和kernel无法识别国产SPI Flash 芯片以及分区的问题_复旦微fmql 社区-CSDN博客 

phy

配置

ip:

因为linux设置与主机共享ip,所以看主机piv4的地址即可。

命令

root下输入:

ifconfig -a        查看系统中所有的网络设备

ifconfig            查看系统当前已激活(打开)的网络设备

能ping通电脑: (每次重启开发板都要再来一次)(u-boot下设置就不用)

 

 但是开发板和ubuntu不能互ping通:

 还是不太行。

看这个:Linux开发板网络直连电脑的设置方法_哔哩哔哩_bilibili

 因为电脑没有禁止wifi

还有一个原因是ubuntu的网络设置

这样就可以ping通ubuntu了。

u-boot

ipaddr是开发板的ip;serverip是ubuntu(电脑中的linux系统,而不是开发板的系统)的ip

SD卡

以下为zynq命令。

以上只是ubuntu下通过shell命令对外设进行操作。

接下来要学怎么写驱动程序了。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值