根据个人核心板上的存储介质类型,选择不同的方式启动动系统。
其中OFF 为 0,ON 为 1.
根据个人核心板上的存储介质类型,选择不同的方式启动动系统后,在调试终端敲入root
获取最高权限。
敲入 lsinput
返回信息如下:
/dev/input/event0
bustype : BUS_HOST
vendor : 0x0
product : 0x0
version : 0
name : "20cc000.snvs:snvs-powerkey"
phys : "snvs-pwrkey/input0"
bits ev : EV_SYN EV_KEY
/dev/input/event1
bustype : BUS_I2C
vendor : 0x0
product : 0x0
version : 0
name : "EP0820M09"
bits ev : EV_SYN EV_KEY EV_ABS
/dev/input/event2
bustype : BUS_HOST
vendor : 0x1
product : 0x1
version : 256
name : "gpio_keys@0"
phys : "gpio-keys/input0"
bits ev : EV_SYN EV_KEY EV_REP
敲入od -x /dev/input/event2
,触发KEY0按钮,打印信息如下:
其中
od -x
或hexdump
表示以十六进制形式打印信息。
0001040 06ef 5d54 7186 0001 0001 0072 0001 0000
0001060 06ef 5d54 7186 0001 0000 0000 0000 0000
0001100 06ef 5d54 0de1 0002 0001 0072 0000 0000
0001120 06ef 5d54 0de1 0002 0000 0000 0000 0000
结束后,敲击键盘Ctrl+c结束指令功能。
echo none > /sys/class/leds/sys-led/trigger
或echo 0 > /sys/class/leds/sys-led/brightness
echo 1 > /sys/class/leds/sys-led/brightness
echo 1 > /sys/class/leds/beep/brightness
echo 0 > /sys/class/leds/beep/brightness
cat /sys/devices/platform/backlight/backlight/backlight/max_brightness
cat /sys/devices/platform/backlight/backlight/backlight/actual_brightness
echo 0 > /sys/class/backlight/backlight/brightness
/etc/init.d/psplash.sh
ts_test
/opt/qt5.5.1/apps/QDesktop/QDesktop &
1565789885.202699: 559 370 255
1565789885.212566: 559 370 255
1565789885.216374: 559 370 255
1565789885.223272: 559 370 255
1565789885.227069: 559 370 255
1565789885.233829: 559 370 255
1565789885.237626: 559 370 255
1565789885.244181: 559 370 255
1565789885.247748: 559 370 255
1565789885.254948: 559 370 255
1565789885.258735: 559 370 255
1565789885.265564: 559 370 255
1565789885.269363: 559 370 255
1565789885.277486: 559 370 0
echo "4" > /sys/class/graphics/fb0/blank
echo "0" > /sys/class/graphics/fb0/blank
Linux硬件系统与PC连接,若通过串口连接以调试Linux硬件,须在PC端安装串口CH340
.
i.MX6ULL Linux阿尔法开发板串口通信协议配置:
命令格式:memtester [-p PHYSADDR]
其中:
- Memtester 为系统内置的内存测试工具,主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等。 通过给定测试内存的大小和次数,可以对系统现有的内存进行上面项目的测试。
- MEMORY: 申请测试内存的数量,单位默认是 megabytes(兆),也可以是 B K M G
- ITERATIONS 测试的次数,默认是无限
如具申请 8MB 内存数量测试做 1 次 DDR 测试,指令为:memtester 8M 1
,返回内容如下:
memtester version 4.3.0 (32-bit)
Copyright (C) 2001-2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffff000
want 8MB (8388608 bytes)
got 8MB (8388608 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Done.
Linux 系统有两个时钟:
date
查看系统时钟,它掉电即会消失,但它会在系统启动时与 RTC 时钟同步,而RTC 时钟在有电池的情况下会长期运行。hwclock
查看硬件时钟。设置时钟:
date -s "2019-7-9 10:00:00"
hwclock -w
uname -a
cat /etc/hostname
cat /etc/issue
cat /proc/cpuinfo
,返回信息如下:processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 12.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : Freescale i.MX6 Ultralite (Device Tree)
Revision : 0000
Serial : 0000000000000000
cat /proc/meminfo
,返回信息如下:MemTotal: 506876 kB
MemFree: 362352 kB
MemAvailable: 355116 kB
Buffers: 5196 kB
Cached: 52744 kB
SwapCached: 0 kB
Active: 55900 kB
Inactive: 38848 kB
Active(anon): 36996 kB
Inactive(anon): 120 kB
Active(file): 18904 kB
Inactive(file): 38728 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 506876 kB
LowFree: 362352 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 36804 kB
Mapped: 26612 kB
Shmem: 312 kB
Slab: 9824 kB
SReclaimable: 3404 kB
SUnreclaim: 6420 kB
KernelStack: 544 kB
PageTables: 748 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 253436 kB
Committed_AS: 76256 kB
VmallocTotal: 1548288 kB
VmallocUsed: 3832 kB
VmallocChunk: 1367948 kB
CmaTotal: 131072 kB
CmaFree: 97244 kB
cat /sys/class/thermal/thermal_zone0/temp
,返回56165,即56.165°(56165/1000)(单位:摄氏度)I.MX6 芯片内部内置有温度传感器,可以实时反映 I.MX6 此 CPU 的内部温度。
ALPHA 开发板有 eth0、eth1 两路百兆网卡。eth0 对应底板上 ENET2,eth1 对应底板上的ENET1.
ifconfig
,在为接入网络时,返回如下:eth0 Link encap:Ethernet HWaddr 56:05:64:2f:c8:56
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 6a:24:68:bb:7e:2e
UP BROADCAST MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:66 errors:0 dropped:0 overruns:0 frame:0
TX packets:66 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4556 (4.4 KiB) TX bytes:4556 (4.4 KiB)
插上网线到 ENET2 处可以看到如下信息,系统自动获取了 ip,eth1 同理。
如果对应网卡没有自动获取到 IP,使用指令udhcpc -i eth0
获取。-i
是指定网卡名称,如不指定,会使用默认会使用 eth0.
ifconfig eth1 down
,打开为ifconfig eth1 up
.ping 196.168.1.31 -I eth0
.其中
-I
表示指定网口,后面加要指定的网口,若不加-I
则使用默认网口。
route
,由下图可知网关为 192.168.1.1,根据路由器不同,网关可能不同。ping 网关可测试内网与开发板连接是否正常,ping 192.168.1.1
.ALPHA 开发板上通过 I2C1 连接了一个三合一环境传感器:AP3216C,支持环境光强度(ALS)、接近距离(PS)和红外线强度(IR)这三个环境参数检测。AP3216C 的特点如下:
cat /sys/class/misc/ap3216c/als
cat /sys/class/misc/ap3216c/ps
cat /sys/class/misc/ap3216c/ir
ICM-20608 是 InvenSense 出品的一款 6 轴 MEMS 传感器,包括 3 轴加速度和 3 轴陀螺仪。陀螺仪的量程范围可以编程设置,可选择±250,±500,±1000 和±2000°/s,加速度的量程范围也可以编程设置,可选择±2g,±4g,±4g,±8g 和±16g。陀螺仪和加速度计都是 16 位的 ADC,并且支持 I2C 和 SPI 两种协议,使用 I2C 接口的话通信速度最高可以达到 400KHz,使用 SPI 接口的话通信速度最高可达到 8MHz.
ICM-20608 特性如下:
通过查看I.MX6U芯片参考手册的如下章节,可见其IO的定义如下。
注意
IOMUXC_SW_MUX_CTL_PAD_XXX_XXX
为IO定义而不是GPIO,GPIO 是一个 IO 众多复用功能中的一种。
其中“IOMUXC_SW_MUC_CTL_PAD_XX_XX”,后面的“XX_XX”就是 GPIO 的命名。
I.MX6U 的 GPIO并不像 STM32 那样以 PA0~15 命名,而是根据某个 IO 所拥有的功能来命名。比如看到 GPIO1_IO01 就知道这个肯定能做 GPIO,看到 UART1_TX_DATA 肯定就知道这个 IO肯定能做为 UART1 的发送引脚。
I.MX6U 的 GPIO 一共有 5 组:GPIO1、GPIO2、GPIO3、GPIO4 和 GPIO5,其中 GPIO1 有 32 个 IO,GPIO2 有 22 个 IO,GPIO3 有 29 个 IO、GPIO4 有 29 个 IO,GPIO5有 12 个 IO,一共有 124 个 GPIO。其中部分端口默认为GPIO端口,但大部分需通过配置端口复用实现。
以端口”IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00“为例,以下为其参考手册中的寄存器介绍,可见,该端口的寄存器地址为 0X020E005C,寄存器大小为 32 位,但只用了最低的 5 位,其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的。
可见GPIO1_IO00 一共可复用为 9种功能 IO,分别对应 ALT0~ALT8,其中 ALT5 就是作为 GPIO1_IO00.
I.MX6U 的 GPIO 不止 GPIO1_IO00~GPIO1_IO09 这 10 个,其它的 IO 都可以复用为 GPIO 来使用。比如下面的UART1_TX_DATA端口,可通过配置其复用寄存器"MUX_MODE"来将端口复用为 GPIO1_IO16.
如果只想看每个 IO 能复用什么外设的话可以直接查阅《IMX6UL 参考手册》的第 4 章“Chapter 4 External Signals and Pin Multiplexing”。设置某个 IO 的复用功能的话就需要查阅第 30 章“Chapter 30: IOMUX Controller(IOMUXC)”,第 30 章详细的列出了所有 IO 对应的复用配置寄存器。
在《 I.MX6UL 参考手册》 第 30 章“ Chapter 30: IOMUX Controller(IOMUXC)”中,每一个 IO会出现两次,它们的名字差别很小:
IOMUXC_SW_MUXCTL_PAD_GPIO1_IO00
IOMUXC_SWPAD_CTL_PAD_GPIO1_IO00
它们都是跟 GPIO_IO00 有关的寄存器,前者MUX见3.1.2节,后者寄存器图如下,可见其寄存器地址为0X020E02E8,是个32位寄存器,但只用了其中的低 17 位。它是用来配
置 GPIO1_IO00 的,包括速度设置、驱动能力设置、压摆率设置等等。
位设置 | 含义 |
---|---|
00 | 100K 下拉 |
01 | 47K 上拉 |
10 | 100K 上拉 |
11 | 22K 上拉 |
位设置 | 速度 |
---|---|
00 | 低速 50M |
01 | 中速 100M |
10 | 中速 100M |
11 | 最大速度 200M |
位设置 | 速度 |
---|---|
000 | 输出驱动关闭 |
001 | R0(3.3V 下 R0 是 260Ω,1.8V 下 R0 是 150Ω,接 DDR 的时候是 240Ω) |
010 | R0/2 |
011 | R0/3 |
100 | R0/4 |
101 | R0/5 |
110 | R0/6 |
111 | R0/7 |
综上,当 IO 用作 GPIO 的时候需要设置的寄存器,一共有八个:DR、GDIR、PSR、ICR1、ICR2、EDGE_SEL、IMR 和 ISR.