EDA365电子论坛网

标题: Linux应用开发手册基于ARM AM335x [打印本页]

作者: Tronlong小分队    时间: 2020-9-27 14:13
标题: Linux应用开发手册基于ARM AM335x
开发案例说明本文档涉及的开发案例位于产品资料“4-软件资料\Demo\tl-linux-application\”路径下的base-demos和python-demos目录。
. }  F9 w( [, Z! g5 f9 a0 tbase-demos目录存放Linux常用开发案例,案例bin目录存放可执行文件,案例src目录存放源码。python-demos目录存放Python开发案例,案例脚本文件无需编译,可直接运行。; x+ Q" c  U8 l; o# p$ f
如需重新编译Linux常用开发案例,请将对应案例src目录复制到Ubuntu工作目录下,进入src目录执行如下命令加载Linux Processor SDK环境变量,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。! Y' F5 b( ]- @1 Y' I
Host#source /home/tronlong/ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05/linux-devkit/environment-setup
  s1 y" q/ i) L. I/ |# IHost#make
$ Y5 ]% e6 N9 ?( e- z6 m
  H" b( [. C& T+ y6 `2 ^/ R4 u图 14 g; I" R. ]# s, ~$ V. m; q

; c! r- L; b7 I1 ^( Z Linux常用开发案例 tl_led_flash案例本案例通过向评估底板用户指示灯LED设备节点反复交替写入1、0数值,实现LED闪烁效果。LED点亮与熄灭时间均为0.5s。
7 r* W9 o. U* I* q1 |" l. h. ^程序流程如下图所示:! G& d9 h/ A/ R+ N+ ^
  C% X+ i7 e4 I! i  U4 X* A& M5 A
图 2 1 F* C6 W% ^6 q0 [

8 ^0 N0 f" x1 [) v; [6 BLED设备节点为“/sys/class/leds/user-ledX/”目录下的brightness。
; B" P1 L& N' h/ Z
5 x/ A% z! c) X! R5 l! t图 3
) I6 }/ [- S% m4 |4 \) Y/ U+ V# |& x& u$ ?5 `
将本案例bin目录下的可执行程序tl_led_flash复制到评估板文件系统,并在可执行程序所在目录执行如下命令运行程序,即可看到评估底板LED以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED设备信息。
+ _3 N) d4 ^9 \Target# ./tl_led_flash -help
& A; C1 X* F5 B; }$ jTarget# ./tl_led_flash -n 3% `) b. T3 O; |* k0 I! k: a9 u0 n. V
$ i% e6 ]2 P* n; c, E; k2 P+ g% R
图 4
; M% |( [, W( G. G: ?. K% C# b
7 n; z, |! ^& s! F. U, o预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。
0 R+ }! P0 @0 H; J. ^* R$ S: z7 A1 s* ^) V' C
图 51 T! ]0 F) \" J6 I

) w9 u$ H# O  x( g  I+ fLED亮灭操作和时间间隔。% D4 w3 W/ b! ^3 J4 u, a7 R

# N6 Q8 w3 z9 `8 [图 6% T8 j9 D2 O6 M

  V7 R( {# k$ m$ x0 }  c( M- t" m tl_key_test案例本案例通过监听用户按键设备节点状态,检测按键事件。2 w) v0 {% F! d1 R
程序流程如下图所示:
% n0 O4 `% p1 G0 V7 Q, d( L
# w2 I  Q+ p. b, w  `" m图 7
1 [5 p  I' v) u! ]" \% c" W1 ]. V* j2 ^! R* ~* E' t
用户按键设备节点为“/dev/input/event1”。获取按键事件后进行按键键值匹配,再进行事件处理。% H/ s! c2 C& I1 n- n; u
将本案例bin目录下的可执行程序tl_key_test复制到评估板文件系统,在可执行程序所在目录执行如下命令运行程序,串口终端将打印提示信息。再按下评估板用户按键,程序将检测到按键事件,并打印按键状态信息。5 M  T$ m. U: B3 j5 b( n# s. B
Target# ./tl_key_test -help3 ^' j* _+ ^, d' }, m7 B6 p
Target# ./tl_key_test -d /dev/input/event19 N& C- M. G" {- C8 o* c' x+ }

" S1 Z+ [& n1 O$ C图 8+ d, }2 R% i# J) P, |3 b
3 M3 M  Z/ \8 L9 s& Z; b" ~
定义按键。
3 n3 z- n' Y4 v! P; Y7 e
8 S, v+ C# t, `8 |: C0 O- d! o& G图 9) K, t2 p( ~$ s8 }
# T1 Q% j. h5 r
监听按键事件。
9 g( i3 I5 o) k
! {- Q4 L0 ?, R$ x; P. X图 10" ^( V2 E; V* a* e& S8 \

* M9 m" z* t( P8 W+ \/ S循环监听。
/ f# B) w% O' N0 q
0 A! t4 @$ L$ N9 M( h图 11! R; A: D$ k) }$ w* K" f7 r
: b0 c+ ^; r$ Z, S
tl_uart_rw案例本案例主要实现串口读写功能。
$ s, w4 b/ o; V程序流程如下图所示:  a  p, Z$ N% W( N) C+ _

4 X7 B: U) Z6 ?; f图 12# ~# A+ @9 R6 C+ n: Z* p
- M3 J" F) j* n! |" S) G! J
RS232、RS485串口设备节点分别为“/dev/ttyS0”、“/dev/ttyS1”。串口初始化时将设置波特率、模式、数据位、停止位等参数。通过设备文件描述符对串口进行读写操作。7 ^8 ]; Z6 I9 l8 F) A! G' z
使用RS232交叉串口母线、USB转RS232公头串口线,将评估板的RS232串口连接到PC机的USB接口,如下图所示。- R& h7 S! e8 y% S; v

; F) v" W7 l# R* c7 g图 13
. J2 n4 J% l, y8 _8 N- K5 [# {% ?% a1 ~: i8 c* k
将本案例bin目录下的可执行程序tl_uart_rw复制到评估板文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。
( G& k7 e' z2 Z; c: u3 UTarget# ./tl_uart_rw -h! E5 E" J7 j% n! p5 \

+ p# w( R- @5 A1 s- L$ c) l图 14, n' k  Z1 |5 V0 T3 O# j/ j! K
4 \& G$ e& p, ]/ R% z5 c: z
执行如下命令进行RS232串口数据读操作。
6 K" K% g. i+ Z+ ^Target# ./tl_uart_rw -d /dev/ttyS0 -r -s 8# H- ?9 B8 h2 V: j$ V" Q3 |
打开产品资料“\4-产品资料\Tools\Windows\”目录下的串口调试工具SerialDebug.exe,打开PC机设备管理器,确认RS232串口COM端口号,并按照下图步骤进行操作或设置,从串口调试工具往RS232串口发送数据。调试串口终端将会打印从RS232串口读取到的数据。
  H9 H& F  r3 I6 ?: r2 d/ u5 Q, p
图 15/ L8 e# M2 i9 A. E) t

$ s/ c( q5 ]% ~% {0 }4 t6 S* x" u9 d6 b
图 16
0 P) e. O% @' M9 s7 s
9 @7 `1 @& p% d% _" }9 Q0 I# O执行如下命令进行RS232串口数据写操作,数据已在程序中定义。串口调试工具将会打印从RS232串口接收的数据。9 m8 x; @% e- B* n. c5 w
Target# ./tl_uart_rw -d /dev/ttyS0 -w -s 8
  {* _$ G* ^) E# B* U+ J9 w% w8 p( `5 P0 N/ a3 A& |; w
图 17+ k8 K7 D  Q/ N: s: O

& I0 t  k) [, Q: k
. L6 [8 T3 u; M2 Z8 }* I# P  c/ g图 18
2 U$ L1 q( H7 P  W) q7 n
& d, ?& |% S0 @) P" s# w9 V1 n7 ?使RS232转RS485模块、USB转RS232公头串口线,将评估板的RS485串口连接到PC机的USB接口,如下图所示。
$ j+ [7 {/ J5 w7 ^# b( a9 G6 |8 T6 D, C
图 19
9 U- m% p8 F6 ~# ?2 R' n' O3 |) M4 t& f- |( s
RS232转RS485模块与评估板上RS485串口连接方法如下:
0 u4 X. f6 _0 Z执行如下命令进行RS458串口数据读写操作。RS485串口测试步骤与现象与RS232类似,命令中的设备节点由ttyS0改成ttyS1即可。- Q. u6 s. I, D2 a1 c
Target# ./tl_uart_rw -d /dev/ttyS1 -r -s 8 //RS485串口数据读操作
' ^( H2 V" r2 T4 V( oTarget# ./tl_uart_rw -d /dev/ttyS1 -w -s 8 //RS485串口数据写操作( H4 q( v& L! b# {- B  o  R
串口初始化函数。) H6 _$ p. C8 X$ H

. b. x& U/ U* N* K& P# O4 Q! N图 20
' D, F! p/ D! N3 o4 c: y9 ?0 C9 U3 v3 E9 c) y' {
串口读写函数。& A' U( ~# T  x  C/ K- D7 R
2 R$ B5 j' U% w% i2 O
图 21
- T) I+ ]2 ]. N* J1 R3 b  i( d; `1 I' o7 B- t2 g9 S

7 ^7 R  H* p( H& I1 L! C' d  _8 e9 d. u4 ]* r
图 22
0 e. A* a& |6 d6 v# C  d) J# b! K1 ^
回环测试。
- l/ [: i; n+ v8 {
' d0 J, |$ c- T图 23
" a) J( g6 Q) x# B2 e# W8 P: ^0 [' l* F3 h; l" n
相关逻辑。
; T: Q6 N$ ?: l9 c( E0 B" C' i: Z4 k) {; r' z4 A. j0 q" g
图 24
) G9 |: I' V! z+ O! d$ f! E$ Q$ L' l3 T# v8 d
tl_can_echo案例本案例使用canutils工具包的canecho程序,实现CAN接口数据接收并重发功能。7 q" M7 J& ]7 E5 a  P) J) y
canutils工具包内含5个独立的程序,分别为canconfig、candump、canecho、cansend、cansequence。各程序功能简述如下:9 C4 z9 ^3 W  f% d2 R2 a. v1 I8 _
本案例仅使用canecho功能,如需实现其他功能,可自行下载canutils工具包并从中获取对应功能程序源码。下载链接:https://public.pengutronix.de/software/socket-can/canutils/。
4 A# p" D6 S( F- n. D4 x  a/ X* X程序流程如下图所示:
/ V% N) W. o) R1 i; O3 o0 o8 w6 ]# g, j9 }4 ?3 P- Y
图 25$ {, M1 i+ h2 I; m* [
! h0 R! D7 |9 {( C0 ]2 F: h0 c' G; B
使用USB转CAN模块连接评估板CAN0接口和PC机USB接口,如下图所示。
/ E! C0 G3 X  ~2 ]8 m5 c1 I+ ]6 j) e/ b$ V1 \8 C
图 26
! v, [$ h1 I/ I, A% @# g0 m/ r: N+ [' N  O2 h8 N& U1 u: q
参照调试工具安装文档安装USB转CAN驱动和ECAN Tools调试软件,双击打开ECAN Tools软件,选择设备类型,然后点击“打开设备”。
8 L$ D3 A; ?' f9 r  Y
! I& k& ]+ v$ B! N7 N* U/ L图 27
) g$ j5 X4 I5 N! B: V) |  n( l- i' e( I- q  {
打开ECAN Tools,界面如下图所示。
0 v4 H9 }; {: j* K8 h; m6 T9 s, f8 _9 p* P
图 28
; ?+ }4 v) e/ _7 E+ h/ W
. w( `  M0 u/ k, v- Y3 @进入评估板文件系统,使用文件系统自带的canconfig工具设置波特率,并启动CAN0接口。1 y: H6 S* n' b% S" F
Target# canconfig can0 stop
/ S" L+ v2 y6 ]5 ^  ]Target# canconfig can0 bitrate 1250006 J" K$ Y$ c  i/ c0 i( a/ L
Target# canconfig can0 start
; a8 {! [. m  ?# l  F( Z! L( i) l* Q" {- w% G, [
图 29/ T* k. ~0 e( J, c
1 ]7 D; U$ Z2 t! `( S
将本案例bin目录下的可执行程序tl_can_echo复制到评估板文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。) d$ H: W$ w% Q4 R# u
Target# ./tl_can_echo -help
' ?. U5 @9 n$ O. u7 y( }3 J
+ x4 p3 R2 q# `+ j, y7 x% i图 30  o% S! f8 p, g: h8 ?

. @# q8 v% ^$ j; n0 R执行如下命令绑定CAN0接口,并接收由ECAN Tools发出的数据,然后将接收到的数据重新发送出去。在ECAN Tools中输入数据并点击发送按钮,可看到有两帧数据,一帧是发送数据,另一帧是接收数据。
5 B) O. {+ r) M. O# mTarget# ./tl_can_echo -v can06 q+ ^* }0 Z% y0 d
9 a) M( ]" w* M0 a
图 311 d% R" M( ^/ Q( e
: u# l6 C# g9 [/ f& U

* n' e4 [; N9 |; ~! h图 328 s3 u4 `9 F# S' }8 {

( L% E8 m. K9 v3 E可按"Ctrl+Z"暂停程序,并执行如下命令退出程序。
$ s: Q/ ^1 o2 D* m& hTarget#  killall -9 tl_can_echo$ L2 m; U. X) q8 Z+ m- }6 }
0 @# ~( q/ Q- ^) x2 ~. R

. P, U7 ~' T4 R! \0 q0 S0 A: ~图 33
5 E( J% b* @6 B  u9 E$ S& o+ L1 p! A2 q8 X6 S' m
使用socket监听CAN接口。
$ U8 L( K5 }  h* M$ ]
5 t1 H9 d8 v) K图 34
: {! q: x# a  p( }1 L( ^  M
6 w& _- ~  F2 l将从CAN接口接收到的数据重新发送出去。  k9 L7 V- ^' J8 w6 p

& K  Z7 D1 Z) W, L- r3 {' Q图 35# k4 q( {' ]$ y% r% ~  b9 w/ q
  n. j7 M& U% N7 C: ?4 ]  W9 e

作者: zmmdmn    时间: 2020-9-27 15:11
编译完成后,将在当前目录下生成可执行文件。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2