开发板K4B T113-S3学习记录

一、常用指令(Linux开发板上操作)

1.配置WiFi网络

# vi /etc/wpa_supplicant.conf
# cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1

network={
        ssid="CMCC-yyc"
        psk="12345678yyc"
        key_mgmt=WPA-PSK
}
# wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
【如果执行失败,查看是否有wpa_supplicant进程,有就停止:
    ps aux|grep wpa_supplicant
    killall wpa_supplicant】

udhcpc -i wlan0

2.挂载nfs

mkdir /mnt/nfs
mount -t nfs -o nolock 192.168.1.5:/home/nfs /mnt/nfs

3.配置NTP

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

验证MQTT

修改开发板的/etc/mosquitto/mosquitto.conf文件,
在#user mosquitto后加一行user root,重启开发板
mosquitto_sub -t test &
mosquitto_pub -t test -m "hello world"
看到hello world说明移植成功

二、buildroot部分修改(Linux编译系统上操作)

mqtt(mosquitto)

./build.sh buildroot_rootfs 
勾选 mosquitto

NFS

./build.sh buildroot_menuconfig
buildroot配置选项中选中nfs-utils和rpcbind
./build.sh buildroot_saveconfig

NTP

Target packages  --->  
    Networking applications  --->  
        [*] ntp  
            [*] ntpd 

libgpio

[*] libgpiod                                                                                       
  [*]   install tools

三、kernel部分修改(Linux编译系统上操作)

NFS

./build.sh menuconfig
<*> NFS clinet support
...3
...4
...4.1
./build.sh saveconfig
 

四、其他功能

RTC部分

查看开发板原理图,找到rtc芯片连接到哪个i2c,k4b连接到i2c-3

i2c地址计算,查看2C总线从地址:读,0A3H;写,0A2H 右移一位就是i2c的地址0x51

使用工具查看i2c设备是否挂载成功

root@kickpi:/mnt/nfs# dmesg -n1 #过滤日志,日志打印设置为1

root@kickpi:/mnt/nfs# i2cdetect -y 3

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

查看加载的rtc驱动:cat /sys/bus/i2c/devices/3-0051/name hym8563 

查看驱动对应的节点: root@kickpi:/mnt/nfs# cat /sys/class/rtc/rtc0/name sunxi-rtc 7090000.rtc root@kickpi:/mnt/nfs# cat /sys/class/rtc/rtc1/name rtc-hym8563 3-0051

rtc命令

hwclock -r -f /dev/rtc1 #读取RTC时间

hwclock -w -f /dev/rtc1 #设置系统时间到RTC

hwclock -s -f /dev/rtc1 #从RTC恢复系统时间 

gpio部分

#查看现有gpio
root@kickpi:~# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-223, parent: platform/pio, pio:
 gpio-110 (                    |PD14                ) out lo
 gpio-116 (                    |usb1-vbus           ) out hi
 gpio-139 (                    |PE11                ) out hi
 gpio-140 (                    |otg_id              ) in  hi
 gpio-141 (                    |phy-rst             ) out hi
 gpio-166 (                    |cd                  ) in  hi ACTIVE LOW
 gpio-192 (                    |PG0                 ) out hi
 gpio-193 (                    |work-led            ) out hi
 gpio-204 (                    |PG12                ) out hi
 gpio-205 (                    |PG13                ) out hi
 gpio-206 (                    |PG14                ) out hi
 gpio-207 (                    |PG15                ) out hi

root@kickpi:~# cd /sys/class/gpio/
root@kickpi:/sys/class/gpio# ls
export     gpiochip0  unexport

#编号计算方式---PD14=3*32+14   PE11=4*32+11
root@kickpi:/sys/class/gpio# echo 110 > export
-sh: echo: write error: Device or resource busy
说明该端口已被占用,需要到设备树注释掉此设备

修改设备树

ubuntu@ubuntu1804:~/t113-linux/kernel/linux-5.4/arch/arm/boot/dts$ vim t113-s3-kickpi-k4b-extend-gpio.dtsi 
 41 &leds {
 42     /*PD14: PD14 {
 43         gpios = <&pio PD 14 GPIO_ACTIVE_HIGH>;
 44         default-state = "on";
 45     };*/
 

再次执行


root@kickpi:~# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-223, parent: platform/pio, pio:
 gpio-116 (                    |usb1-vbus           ) out hi
 gpio-139 (                    |PE11                ) out hi
 gpio-140 (                    |otg_id              ) in  hi
 gpio-141 (                    |phy-rst             ) out hi
 gpio-166 (                    |cd                  ) in  hi ACTIVE LOW
 gpio-192 (                    |PG0                 ) out hi
 gpio-193 (                    |work-led            ) out lo
 gpio-204 (                    |PG12                ) out hi
 gpio-205 (                    |PG13                ) out hi
 gpio-206 (                    |PG14                ) out hi
 gpio-207 (                    |PG15                ) out hi
root@kickpi:~# cd /sys/class/gpio/
root@kickpi:/sys/class/gpio# ls
export     gpiochip0  unexport


root@kickpi:/sys/class/gpio# echo 110 > export
root@kickpi:/sys/class/gpio# ls
export     gpio110    gpiochip0  unexport
root@kickpi:/sys/class/gpio# cd gpio110
root@kickpi:/sys/class/gpio/gpio110# ls
active_low            direction             power                 uevent                waiting_for_supplier
device                edge                  subsystem             value


#写值测试[direction:out/in  value:0/1]
root@kickpi:/sys/class/gpio/gpio110# echo out > direction
root@kickpi:/sys/class/gpio/gpio110# echo 1 > value
root@kickpi:/sys/class/gpio/gpio110# cat direction
out
root@kickpi:/sys/class/gpio/gpio110# cat value
1
direction文件:表示GPIO引脚的方向,它的可取值如下:

in:引脚为输入模式。

out:引脚为输出模式,且默认输出电平为低。

low:引脚为输出模式,且默认输出电平为低。

high:引脚为输出模式,且默认输出电平为高。

value文件:表示GPIO的电平,1表示高电平,0表示低电平。GPIO被配置为输出 模式, 那么修改该文件的内容可以改变引脚的电平。

edge文件:用于配置GPIO的中断触发方式,当GPIO被配置为中断时,可以通过系统 的poll函数监听。edge文件可取如下的属性值:

none:没有使用中断模式。

rising:表示引脚为中断输入模式,上升沿触发。

falling:表示引脚为中断输入模式,下降沿触发。

both:表示引脚为中断输入模式,边沿触发。

Linux5.x内核使用gpio的新方法

root@kickpi:/sys/class/gpio# gpiodetect #列出所有的GPIO控制器
gpiochip0 [pio] (224 lines)
#列出gpio控制器的110引脚情况
root@kickpi:/sys/class/gpio# gpioinfo gpiochip0 | grep 110
line 110:      unnamed       unused  output  active-high
#设置gpiochip0组编号110引脚为高电平
root@kickpi:/sys/class/gpio# gpioset gpiochip0 110=1
root@kickpi:/sys/class/gpio# gpioset gpiochip0 110=0
#获取gpiochip0组编号110引脚状态
root@kickpi:/sys/class/gpio# gpioget gpiochip0 110
0

#查看是否被占用
cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep PD14

五、遇到问题

/home/ubuntu/t113-linux/out/t113/evb1_auto/buildroot/buildroot/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/gpiod.h:1143:18: error: field 'ts' has incomplete type
  struct timespec ts;
                  ^

把 CFLAGS 从 -std=c99 改为 -std=gnu99
即可让编译器自动带上 POSIX 扩展,从而识别 struct timespec。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值