完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
linux应用开发
本章主要介绍MYD-Y6ULX开发板底板外围硬件设备应用例程的使用。 使用前,需要先安装Yocto提供的SDK工具链,再编译所有例程代码,并拷贝至开发板目录下。 编译应用例程 加载工具链到当前终端后,可以查看gcc的版本信息,确认当前环境已正确加载。 $source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/environment-setup-cortexa7hf-neon- poky-linux-gnueabi $ ARM-poky-linux-gnueabi-gcc --version arm-poky-linux-gnueabi-gcc (GCC) 5.3.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 编译示例代码: $cd $DEV_root/04-Sources $tar xvf example.tar.gz $cd example $make |
|
|
|
LCD测试
本例程演示对Linux的FrameBuffer设备操作,实现液晶输出显示RGB颜色和颜色合成测试。 例程基于Linux FrameBuffer API接口开发。 测试前需要把 LCD连接至J3接口上。 米尔科技提供三种LCD模块,Linux默认配置为MY-TFT043RV2。
执行程序后,LCD液晶屏会出现相应颜色,以下是终端输出信息: # ./framebuffer_test The framebuffer device was opened successfully. vinfo.xres=480 vinfo.yres=272 vinfo.bits_per_bits=16 vinfo.xoffset=0 vinfo.yoffset=0 red.offset=11 green.offset=5 blue.offset=0 transp.offset=0 finfo.line_length=960 finfo.type = PACKED_PIXELS The framebuffer device was mapped to memory successfully. color: red rgb_val: 0000F800 color: green rgb_val: 000007E0 color: blue rgb_val: 0000001F color: r & g rgb_val: 0000FFE0 color: g & b rgb_val: 000007FF color: r & b rgb_val: 0000F81F color: white rgb_val: 0000FFFF color: black rgb_val: 00000000 支持MY-TFT070RV2的配置方法 MYD-Y6ULX开发板中提供的Linux代码已经支持该模块的显示和触摸功能。 MY-TFT070RV2的触摸功能是通过ADC采样方式,dts代码中已配置好,只 需要启用相应功能即要可。 第一步,编辑"arch/arm/boot/dts/myb-y6ull-14x14.dts"文件,修改tsc的status属性为okay。 &tsc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_tsc>; xnur-GPIO = <&gpio1 3 GPIO_ACTIVE_LOW>; measure-delay-time = <0xfffff>; pre-charge-time = <0xffff>; status = "okay"; }; 第二步,将默认的4.3寸屏莫的配置注释,并打开7.0寸的配置。 找到lcfif节点下的display-timings节点,修改如下: display-timings { native-mode = <&timing0>; /* timing0: timing0 { clock-frequency = <9200000> hsync-len = <41>; vback-porch = <2>; vfront-porch = <4>; vsync-len = <10>; hsync-active = <0>; vsync-active = <0>; de-active = <1>; pixelclk-active = <0>; }; */ timing0: timing0 { clock-frequency = <33000000>; hactive = <800>; vactive = <480>; hfront-porch = <210>; hback-porch = <46>; hsync-len = <1>; vback-porch = <22>; vfront-porch = <23>; vsync-len = <20>; hsync-active = <0>; vsync-active = <0>; de-active = <1>; pixelclk-active = <1>; }; }; |
|
|
|
支持MY-TFT070CV2的配置方法
MY-TFT070CV2模块的触摸使用的是I2C方式通讯,丛设备已添加到i2c2控制器上。 使用前禁用tsc控制器,再启用7寸屏的配置参数即可。 第一步,编辑“arch/arm/boot/dts/myb-y6ull-14x14.dts”文件,修改tsc的status属性为disabled。 &tsc { pinctrl-names = “default”; pinctrl-0 = 《&pinctrl_tsc》; xnur-gpio = 《&gpio1 3 GPIO_ACTIVE_LOW》; measure-delay-time = 《0xfffff》; pre-charge-time = 《0xffff》; status = “disabled”; }; 第二步,将默认的4.3寸屏莫的配置注释,并打开7.0寸的配置。 找到lcfif节点下的display-timings节点,修改如下: display-timings { native-mode = 《&timing0》; /* timing0: timing0 { clock-frequency = 《9200000》 hsync-len = 《41》; vback-porch = 《2》; vfront-porch = 《4》; vsync-len = 《10》; hsync-active = 《0》; vsync-active = 《0》; de-active = 《1》; pixelclk-active = 《0》; }; */ timing0: timing0 { clock-frequency = 《33000000》; hactive = 《800》; vactive = 《480》; hfront-porch = 《210》; hback-porch = 《46》; hsync-len = 《1》; vback-porch = 《22》; vfront-porch = 《23》; vsync-len = 《20》; hsync-active = 《0》; vsync-active = 《0》; de-active = 《1》; pixelclk-active = 《1》; }; }; |
|
|
|
触摸测试
MYD-Y6ULX支持两种触摸方式,电容和电阻。 米尔科技可提供两种带触摸的液晶,7寸电容MY-TFT070CV2和4.3寸电阻MY-TFT043RV2。 触摸测试可以使用ts_calibrate和ts_test命令,ts_calibrate用于触摸校验,ts_test用于测试。 其中,命令需要变量“TSLIB_TSDEVICE”来找到触摸设 备,不同触摸方式的设备节点不一定相同,请对应设备填写。 # export TSLIB_TSDEVICE=/dev/input/event1 # ts_calibrate //测试触摸屏 # ts_test |
|
|
|
Ethernet 测试
本例使用Linux sokect API,实现简单的C/S结构的程序,两个程序通过TCP/IP协议栈通信。 将可执行程序arm_CLIent拷贝至开发板,pc_server拷贝 至PC,将开发板和PC接入网络。 在 PC 上配置IP并运行服务程序: $ sudo ifconfig eth0 192.168.1.111 $ 。/pc_server REC FROM: 192.168.1.222 在开发板上运行客户程序,将看到所发送的信息: # ifconfig eth0 192.168.1.222 # 。/arm_client 192.168.1.111 form server: Make Your idea Real! |
|
|
|
GPIO-KEY 测试
本例演示如何在Linux用户空间读取按键状态和键值。 运行gpio_key程序后,按下或释放S2按键,串口会输出相应按键的状态信息。 按下“Ctrl-C”可 退出程序。 在开发板的控制终端上执行程序: # 。/gpio_key /dev/input/event2 Hit any key on board 。..。.. key 2 Pressed key 2 Released key 2 Pressed key 2 Released GPIO-LED 测试 本例程演示使用Linux系统API操作开发板上的LED灯,D30。 运行程序后,D30闪烁。 按下“Ctrl-C”可结束程序。 # 。/gpio_led /sys/class/leds/user/brightness USB Host 测试 使用USB存储设备插入USB HOST(J6)接口,调试串口会输出检测设备信息。 同时,使用将此存储设备挂载至linux系统下对其读写。 # u*** 1-2: USB disconnect, device number 6 u*** 1-2: new high-speed USB device number 7 using atmel-ehci u*** 1-2: New USB device found, idVendor=0bda, idProduct=0316 u*** 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 u*** 1-2: Product: USB3.0-CRW u*** 1-2: Manufacturer: Generic u*** 1-2: SerialNumber: 20120501030900000 u***-storage 1-2:1.0: USB Mass Storage device detected scsi host5: u***-storage 1-2:1.0 scsi 5:0:0:0: Direct-Access Generic- SD/MMC 1.00 PQ: 0 ANSI: 4 sd 5:0:0:0: [sda] 31116288 512-byte logical blocks: (15.9 GB/14.8 GiB) sd 5:0:0:0: [sda] Write Protect is off sd 5:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn‘t support DPO or FUA sda: sda1 sda2 sd 5:0:0:0: [sda] Attached SCSI removable disk # mount /dev/sda1 /mnt/ # echo “hello” 》 /mnt/hello.txt # cat /mnt/hello.txt hello |
|
|
|
USB Device测试
本例程演示使用开发板的MICro USB接口(J26)作为Device模式,可以将指定的文件或设备模拟为设备,连接到其它USB HOST设备。 这里把内存作为 存储设备提供给HOST设备。 开发板上使用modprobe加载驱动: #mkfs.vfat /dev/ram1 #modprobe g_mass_storage file=/dev/ram1 removable=1 iSerialNumber=“1234” [ 3048.950498] Mass Storage Function, version: 2009/09/11 [ 3048.982245] LUN: removable file: (no medium) [ 3048.997849] LUN: removable file: /dev/ram1 [ 3049.000674] Number of LUNs=1 [ 3049.002272] Number of LUNs=1 [ 3049.023990] g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11 [ 3049.029682] g_mass_storage gadget: g_mass_storage ready [ 3094.766373] g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage Linux PC机上查看到有USB设备接入,SerialNumber为“1234”,Manufacturer是内核构建版本号: #dmesg | tail -n 20 [2872436.778616] u*** 1-1: USB disconnect, device number 102 [2872436.779156] sd 3:0:0:0: [sdb] Synchronizing SCSI cache [2872436.779201] sd 3:0:0:0: [sdb] Synchronize Cache(10) failed: Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK [2872442.508567] u*** 1-1: new high-speed USB device number 103 using xhci_hcd [2872442.650549] u*** 1-1: New USB device found, idVendor=0525, idProduct=a4a5 [2872442.650551] u*** 1-1: New USB device strings: Mfr=3, Produ ct=4, SerialNumber=5 [2872442.650552] u*** 1-1: Product: Mass Storage Gadget [2872442.650553] u*** 1-1: Manufacturer: Linux 4.1.15-1.2.0+g8d9 8da6 with 2184000.u*** [2872442.650554] u*** 1-1: SerialNumber: 1234 [2872442.657827] u***-storage 1-1:1.0: USB Mass Storage device detected [2872442.657895] u***-storage 1-1:1.0: Quirks match for vid 0525 pid a4a5: 10000 [2872442.657923] scsi host3: u***-storage 1-1:1.0 [2872443.669426] scsi 3:0:0:0: Direct-Access Linux FileStor Gadget 0401 PQ: 0 ANSI: 2 [2872443.669886] sd 3:0:0:0: Attached scsi generic sg1 type 0 [2872443.670820] sd 3:0:0:0: [sdb] 131072 512-byte logical blocks: (67.1 MB/64.0 MiB) [2872443.779976] sd 3:0:0:0: [sdb] Write Protect is off [2872443.779979] sd 3:0:0:0: [sdb] Mode Sense: 0f 00 00 00 [2872443.890093] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn‘t support DPO or FUA [2872444.110372] sdb: [2872444.330074] sd 3:0:0:0: [sdb] Attached SCSI removable disk |
|
|
|
RS485 测试
本例程演示如何使用 Linux Serial API编程,使用RS485接口,实现数据发送和接收,详细请参考源码。 硬件连接 MYD-Y6ULX上有一个RS485接口(J10),可以将A,B信号线与另外的RS485设备相连接。 或者是USB转RS485的转换器设备。 软件测试 将编译出来的可执行程序拷贝至MYD-Y6ULX开发板系统内。 MYD-Y6ULX作为发送端执行以下命令,另外一端的设备可以接数据。 # 。/rs485_write -d /dev/ttymxc3 -b 4800 -e 1 SEND[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 SEND[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 SEND[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 SEND[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 另一个设备作为接收端: # 。/rs485_read -d /dev/ttymxc3 -b 4800 -e 1 RECV[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 RECV[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 RECV[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 RECV[20]: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 |
|
|
|
RS232 测试
本例程演示如何使用 Linux Serial API编程,使用RS232接口,实现数据发送和接收,详细请参考源码。 硬件连接 MYD-Y6ULX上有一个RS232接口(J10),可以将TXD,RXD信号线与另外的RS232设备相连接。 或者是USB转RS232的转换器设备,此处使用USB转 RS232设备连接到PC。 软件测试 将编译出来的可执行程序拷贝至MYD-Y6ULX开发板系统内。 MYD-Y6ULX作为发送端执行以下命令,PC端接收数据。 # 。/UART_test -d /dev/ttymxc1 -b 115200 /dev/ttyS1 RECV 10 total /dev/ttyS1 RECV: 1234567890 /dev/ttyS1 RECV 10 total /dev/ttyS1 RECV: 1234567890 /dev/ttyS1 RECV 10 total /dev/ttyS1 RECV: 1234567890 /dev/ttyS1 RECV 10 total /dev/ttyS1 RECV: 1234567890 在PC端可以使用串口工具查看接收的数据。 CAN Bus 测试 本例程演示使用Linux socket CAN API,使用MYD-Y6ULX上的CAN总线接口发送和接收数据。 将can_send和can_receive拷贝至开发板。 执行以下步 骤: 硬件连接 MYD-Y6ULX开发板有一个CAN总线接口(J10),将H,L信号线与另外的CAN通讯设备或USB CAN转换器相连接。 软件测试 配置开发板上CAN0通信波特率都设置为 50kbps,并使能CAN0设备 Linux上可以使用两种工具来配置CAN设备,canconfig和ip,MYD-Y6ULX附带的系统默认使用ip命令。 canconfig命令配置: # canconfig can0 bitrate 50000 ctrlmode triple-sampling on # canconfig can0 start ip命令配置 # ip link set can0 type can bitrate 50000 triple-sampling on # ifconfig can0 up CAN收发测试可以使用系统附带的cansend、 candump命令,也可以使用资源包中CAN收发例程。 MYD-Y6ULX作为发送端: 使用cansend发送数据到CAN总线: # cansend can0 100#01.02.03.04.05.06.07.08 can_send例程运行后会一直发送数据,直到ctrl + c结束。 # 。/can_send -d can0 -i 100 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 其他设备作为接收端: 使用candump接收CAN数据: # candump can0 # can0 100 [8] 01 02 03 04 05 06 07 08 can_receive例程接收来自CAN总线的数据: # 。/can_receive -d can0 can0 0x100 [8] 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 can0 0x100 [8] 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 can0 0x100 [8] 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 can0 0x100 [8] 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 |
|
|
|
Audio 测试
硬件连接 本例程演示使用Linux系统中的arecord/aplay命令对音频接口录音和放音。 需要使用两头3.5mm的音频AUX线,从电脑音频输出孔和开发板的LINE IN(J5)接口连接,HEADERPHONE(J4)连接耳机。 软件操作 在电脑中播放音频文件,执行arecord命令会先将LINE IN中的音频录制并保存为test.wav文件。 运行一分钟后再按ctrl + c来停止。 # arecord -f cd test.wav 执行aplay命令来播放上面录制好的音频文件。 # aplay test.wav CAMERA 测试 MYD-Y6ULX上提供一个并行Camera接口(J9),可以连接MY-CAM011B型号的Camera模块,模块之间使用FPC线连接。 由于信号序列影响,请勿直接 将其它型号的Camera的模块插入,否则会引起模块或开发板的损坏。 本例程演示使用一款开源的视频流软件uvc_stream,可以将Camera设备捕捉的数据显示在web页面。 硬件连接 使用FPC数据线将MYB-CAM011B模块和MYD-Y6ULX板上的J9接口相连接。 软件操作 uvc_stream是通过的网络传输数据,需要先设置好MYD-Y6ULX板的以太网IP地址,对应系统中的eth0设备。 Linux系统中的MY-CAM011B模块的设 备,可通通过v4l2-ctl命令来查询到,输出信息的i.MX6S_CSI表示Camera控制器,对应设备是/dev/video1。 uvc_stream参数中‘-y’是使用yuyv方 式,‘-P’后面是设置web界面的登录密码,用户名默认为uvc_user。 ‘-r’是指定分辨率,当前仅支持800x600。 可以用ctrl + c来停止。 # ifconfig eth1 192.168.1.42 # v4l2-ctl --list-devices i.MX6S_CSI (platform:21c4000.csi): /dev/video1 pxp (pxp_v4l2): /dev/video0 # 。/uvc_stream -d /dev/video1 -y -P 123456 -r 800x600 uvc_stream提供两种web功能,snapshot和streaming。 snapshot的请求URL是snapshot.jpeg,streaming的请求URL是stream.mjpeg。 PC和开发板 在同一网络内时,打开流览器,输入地址:,可以看到有登录框,输入用户名为uvc_user,密码为 123456,就可以看到从MY-CAM011B实时采集到的图像了。 |
|
|
|
wifi测试
MYD-Y6ULX开发板提供一个WiFi模块(J11),支持Client模式。 硬件连接 将附带SMA接口的天线安装在开发板的J12位置。 Client模式 Client模式是用于将WiFi模块作为客户端设备,主动连接于路由器或其它提供无线热点的设备。 系统中已经加入WiFi模块的驱动,启动后会自动加载相应驱动。 驱动加载成功后会出现对应的wlan0网络设备,使用ifconfig命令来确认。 # ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr a0:2c:36:60:ee:e0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3388 errors:0 dropped:10 overruns:0 frame:0 TX packets:37 errors:0 dropped:3 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:395459 (386.1 KiB) TX bytes:6074 (5.9 KiB) 下面使用wpa_passphrase生成对应WiFi热点SSID的密码,然后由wpa_supplicant命令实现WiFi模块与WiFi热点的连接。 # wpa_passphrase “MYiRTech” 》》 wifi.conf 12345678 # cat wifi.conf network={ ssid=“MYiRTech” #psk=“12345678” psk=b96d9a5de2d9480ad5f987857e20216b47a0c4bf43397825ba909438bc52aaff } # wpa_supplicant -D wext -B -i wlan0 -c wifi.conf Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device R8188EU: Firmware Version 11, SubVersion 1, Signature 0x88e1 MAC Address = a0:2c:36:60:ee:e0 IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready ioctl[SIOCSIWAP]: Operation not permitted R8188EU: INFO indicate disassoc 连接成功后,使用udhcpc获取IP地址后,就可以使用了。 # udhcpc -b -i wlan0 -R # ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr a0:2c:36:60:ee:e0 inet addr:192.168.1.211 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5577 errors:0 dropped:15 overruns:0 frame:0 TX packets:46 errors:0 dropped:3 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:651690 (636.4 KiB) TX bytes:7472 (7.2 KiB) |
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 00:37 , Processed in 1.143994 second(s), Total 99, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号