找回密码
 注册
关于网站域名变更的通知
查看: 284|回复: 1
打印 上一主题 下一主题

Linux应用开发手册基于ARM AM335x

[复制链接]
  • TA的每日心情
    奋斗
    2020-3-25 15:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-9-27 14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    开发案例说明本文档涉及的开发案例位于产品资料“4-软件资料\Demo\tl-linux-application\”路径下的base-demos和python-demos目录。( z5 i; A! u1 q7 C* e
    base-demos目录存放Linux常用开发案例,案例bin目录存放可执行文件,案例src目录存放源码。python-demos目录存放Python开发案例,案例脚本文件无需编译,可直接运行。
    , \9 |# o; q; e" _6 ]如需重新编译Linux常用开发案例,请将对应案例src目录复制到Ubuntu工作目录下,进入src目录执行如下命令加载Linux Processor SDK环境变量,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。$ b7 w$ |/ N, [2 N
    Host#source /home/tronlong/ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05/linux-devkit/environment-setup- R6 m  a' V, I/ |
    Host#make: ?8 \# G6 m# t  S$ q" e; c
    ( t! {: Z% @* P! J: S& b$ v
    图 1
    $ n" F* v: m6 {$ E, }
    / E! m  f0 U5 T9 K( j+ y: R& u Linux常用开发案例 tl_led_flash案例
    • 案例功能5 K! ]: ?4 s5 H  E8 |1 u
    本案例通过向评估底板用户指示灯LED设备节点反复交替写入1、0数值,实现LED闪烁效果。LED点亮与熄灭时间均为0.5s。
    4 r! u* h$ T# A7 ]程序流程如下图所示:1 O" `) B! X  t& I4 C

    # S! Y9 S' U0 s7 H! B图 2
    1 l7 c, c1 d: {
    1 S3 l# \+ ?- ?  f% W. CLED设备节点为“/sys/class/leds/user-ledX/”目录下的brightness。
    1 a0 O, k6 r% {) [4 S' K3 U7 o( Q" H' c) x2 T0 o) U3 v! v) i  \
    图 3- z  K# N4 p/ j* l( N

      G' U8 q+ B! l- O4 ~9 H
    • 操作说明
      $ I& a8 {6 S3 m$ d# s1 {
    将本案例bin目录下的可执行程序tl_led_flash复制到评估板文件系统,并在可执行程序所在目录执行如下命令运行程序,即可看到评估底板LED以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED设备信息。
    % p, f4 X& R8 L6 r/ X7 U7 l- |Target# ./tl_led_flash -help& ]0 k6 N" K5 ?' m$ o) c' w7 B
    Target# ./tl_led_flash -n 3
    6 g9 c# y( t, J2 \
    # D7 y3 v& d. `  z( M0 L/ x图 4% S* X6 `& d: X

    & k6 ]! h) M: e/ q$ e# b5 m5 @
    • 关键代码
      & I1 a) b* i  a8 i: d; |
    预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。' a- m0 Y7 B" G' B0 X! d4 T4 q* X

    # H7 ?& @& f0 k4 p+ u& P% J图 5: U" L5 {- r5 q0 V
    6 b8 _1 |" n# H# ]+ S8 e- X3 k
    LED亮灭操作和时间间隔。
    6 r8 @; M; G3 Q- ?7 g. H5 F  H$ V
    : q, W) g; f9 u& b! H图 6
    / ?' f8 F) `) k- k. t
      ]8 r& W* M5 s  ]) \; P+ u4 E' _ tl_key_test案例
    • 案例功能
      4 }& m& \7 h+ l9 G* L/ q
    本案例通过监听用户按键设备节点状态,检测按键事件。) t/ @3 P' q9 P: l; y4 l
    程序流程如下图所示:) R  t) H' m+ u1 b6 H, N* Q
    8 s6 ?! y$ o8 H. d. X; `
    图 7
    ( J" K; H) j9 t6 {, n1 n7 P' W/ B! T4 U* ~" g( D( Q( A
    用户按键设备节点为“/dev/input/event1”。获取按键事件后进行按键键值匹配,再进行事件处理。
    ( W( S7 k  X$ i& C5 ^' |
    • 操作说明) a5 |+ Y0 A& ]) V# X1 J' I
    将本案例bin目录下的可执行程序tl_key_test复制到评估板文件系统,在可执行程序所在目录执行如下命令运行程序,串口终端将打印提示信息。再按下评估板用户按键,程序将检测到按键事件,并打印按键状态信息。
    & T$ X5 o& c2 x' m# }Target# ./tl_key_test -help
      Y: q* [7 J) B! X! LTarget# ./tl_key_test -d /dev/input/event1$ R1 X9 ^, `! ~/ E5 e

    / J6 ?" C5 n9 B5 C4 M$ m图 8
    6 S7 A" I9 ^! e$ G; e# L* H% d/ K) f5 i, p2 Z& i; P, ]2 {& _
    • 关键代码
      ! ^( a' Y8 a6 m$ B8 Y4 R
    定义按键。
    ; H# G1 Q. e7 k1 i
    " h1 ]1 R: m7 |+ W0 [; }! o1 @! i图 97 v/ R# I7 E& A& @* l
    4 s! Z$ \& Q" U0 d' _+ R% ?
    监听按键事件。
    & D- o6 X) c3 E- x/ Q5 z# q  p+ s$ |8 g: |7 v% d! c
    图 10
    2 B1 K0 p! V8 }& L# M
    " `0 q1 G7 z5 S, r循环监听。9 ]2 @, H+ N% V( @
      e$ @1 H4 B$ e/ C
    图 11: r; D$ b' _* }4 e4 ^
    . y  {7 D( |# k( V% P
    tl_uart_rw案例
    • 案例功能
      " j! I4 }8 L, e# C+ f
    本案例主要实现串口读写功能。
    3 G* i  ~. `* ?0 J( I程序流程如下图所示:
    * X; R1 ?+ i3 a0 D9 k* N) i
    1 j6 E* R' L& v& H& @0 z- K, F图 129 v' A5 x7 c3 D$ A6 y: l" `
      Y3 G; c1 K' H7 H$ `4 C+ o6 z
    RS232、RS485串口设备节点分别为“/dev/ttyS0”、“/dev/ttyS1”。串口初始化时将设置波特率、模式、数据位、停止位等参数。通过设备文件描述符对串口进行读写操作。
    . |( ]! f' N9 J- f# }' }- ?; }
    • 操作说明5 U/ ~# I" H' I# ^/ F8 D
    使用RS232交叉串口母线、USB转RS232公头串口线,将评估板的RS232串口连接到PC机的USB接口,如下图所示。
    3 j( F2 Q% a$ `) N6 c+ [( x& X3 U5 U3 u2 Q8 l. t
    图 13) ^& J, U1 X3 ^; J
    0 g/ a1 n$ p( `
    将本案例bin目录下的可执行程序tl_uart_rw复制到评估板文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。
    2 Q, L0 R5 q/ A. E1 p/ k! M( x, zTarget# ./tl_uart_rw -h
    ' [$ L; a# I& w1 _& R2 r5 X1 d* U% G; z8 d8 \
    图 149 `4 E5 d( E5 V+ s) {' k3 R

    ' J% n$ E: B6 q0 B, h2 C4 b执行如下命令进行RS232串口数据读操作。8 ^4 G" l2 [1 H
    Target# ./tl_uart_rw -d /dev/ttyS0 -r -s 8, a4 X, m% D; l- L: h6 y
    打开产品资料“\4-产品资料\Tools\Windows\”目录下的串口调试工具SerialDebug.exe,打开PC机设备管理器,确认RS232串口COM端口号,并按照下图步骤进行操作或设置,从串口调试工具往RS232串口发送数据。调试串口终端将会打印从RS232串口读取到的数据。
    9 q# G5 Z) h2 ?9 r8 o; R' T- F. u5 H6 u; i" ?
    图 15
    ) z5 E- Y' |& T* b5 ?! C' o  Z5 l8 r0 J) |  m
    # ~8 [( O! c0 A; u9 D6 R( O
    图 16" P. o; t$ |6 w, L% j

    0 n( F* D# q0 D8 j! ^执行如下命令进行RS232串口数据写操作,数据已在程序中定义。串口调试工具将会打印从RS232串口接收的数据。
    , {& w! B; x- v9 O  pTarget# ./tl_uart_rw -d /dev/ttyS0 -w -s 85 i% P2 l" q6 X4 u- w& O4 T/ c

    ) n: S! M2 w1 y3 j- `. N' A图 17$ t! j# ?8 X' M2 c2 L
      S; v7 e5 S, V, b1 A
    / X0 n% X0 c5 H+ V, E* v% R
    图 186 i  W7 I$ p- _- {  I6 R

    % B4 s& o5 Z' Q% u% ^2 O6 f使RS232转RS485模块、USB转RS232公头串口线,将评估板的RS485串口连接到PC机的USB接口,如下图所示。+ G. O5 u, _3 n/ \

    ' G& ^! g, T& @- g' M图 19
    + C- H8 U# o: g3 k: t; w1 F5 i3 c
    ) d, o: Q# |* s4 R1 d. kRS232转RS485模块与评估板上RS485串口连接方法如下:
    : h/ D% p. P) G: [0 x* U9 h! b
    • RS232转RS485模块485+端子,连接评估板RS485串口A端子。
    • RS232转RS485模块485-端子,连接评估板RS485串口B端子。
    • RS232转RS485模块GND端子,连接评估板RS485串口GND端子。
      % D/ _2 K6 Q$ |0 z
    执行如下命令进行RS458串口数据读写操作。RS485串口测试步骤与现象与RS232类似,命令中的设备节点由ttyS0改成ttyS1即可。
    " }5 o. |# z" }0 S& Z' U; B  S" xTarget# ./tl_uart_rw -d /dev/ttyS1 -r -s 8 //RS485串口数据读操作- i) n: U6 ^. {$ P) V
    Target# ./tl_uart_rw -d /dev/ttyS1 -w -s 8 //RS485串口数据写操作- n) w: i  y8 T! ~& t
    • 关键代码
      " H" {- Y( |7 |  _. M
    串口初始化函数。6 c7 c2 Q; _/ v8 u5 a6 y# o
    1 P: z; {9 r+ k
    图 208 H- t- y/ V% b9 Z2 t
    $ r5 c% G/ P# P2 Z
    串口读写函数。
    1 S$ i, {: E  W5 p' [" x# O; }
    图 21+ k6 e$ Q4 f1 w. l* I

      ]2 p+ j3 x' F1 v: ]9 K5 G9 j' r8 L  P3 r# a
    ' h! b! V+ R0 r' d! r; m
    图 22
    ; |: B3 u: E4 I( A9 y' I9 a5 R5 J+ k6 G% N3 I
    回环测试。
    / h( y1 Q: {* e) _0 g8 Q
    / F1 l4 l* ~5 u8 v) S' g9 T8 i2 A图 23) J6 h8 F$ @+ b

    . Z" e. ~0 h+ p; i相关逻辑。
    ! }# f. x( Z$ x" }9 p, B# Q9 E1 C3 o; {9 z/ q8 q6 |+ W
    图 24  v' P( E4 j+ c" C
    7 k1 k; A7 w1 e
    tl_can_echo案例
    • 案例功能
      9 A9 \9 F/ R7 b* b0 z7 q) B
    本案例使用canutils工具包的canecho程序,实现CAN接口数据接收并重发功能。
    ! U9 b: k3 {& D4 r9 s4 |) ucanutils工具包内含5个独立的程序,分别为canconfig、candump、canecho、cansend、cansequence。各程序功能简述如下:
    6 M" j+ v% G% ^0 j
    • canconfig:用于配置CAN接口参数,比如波特率、模式等。
    • candump:从CAN接口接收数据并以十六进制形式打印到标准输出,亦可输出到指定文件。
    • canecho:从CAN接口接收数据,并将接收到的数据对外发送。
    • cansend:向指定CAN接口发送数据。
    • cansequence:向指定CAN接口发送自动重复递增数字,或指定接收模式并校验接收的递增数字。
      + j! \5 _5 o, U2 |7 q8 Z5 W  K
    本案例仅使用canecho功能,如需实现其他功能,可自行下载canutils工具包并从中获取对应功能程序源码。下载链接:https://public.pengutronix.de/software/socket-can/canutils/。* }) `4 w3 E  I7 e! l
    程序流程如下图所示:. u- w4 Q; T5 U& x2 U1 q+ }9 ~
    - V# {" Q& W5 H- A
    图 25
    & c; Q. r! \$ `# S6 V. B& y# h9 ^
    1 d, m5 G% X6 i) i
    • 操作说明
      4 z% C6 j/ e& e9 x! L- l# Z
    使用USB转CAN模块连接评估板CAN0接口和PC机USB接口,如下图所示。
    2 ^) K. d/ S6 R- b+ V, G8 @! {
      V, ^1 ^2 b, |# k* o, ~! h: D图 26+ R$ y4 l% N5 {+ X

    1 d1 Y3 j5 J8 r参照调试工具安装文档安装USB转CAN驱动和ECAN Tools调试软件,双击打开ECAN Tools软件,选择设备类型,然后点击“打开设备”。: }5 e& N5 P0 J5 k) C4 L3 c* ~) |

    & ~) \$ m9 G1 J3 l$ N图 27" b& g( V' |/ R- R$ V/ a2 {9 K! O( s

    $ W- C6 Z* }2 M+ O2 x( l打开ECAN Tools,界面如下图所示。1 d4 z" p5 P5 J+ v! ?/ N$ ^
      {* A% V6 Z7 |3 V
    图 285 J8 O) E! r# j+ i) t

    + N$ @6 N/ z( M* b进入评估板文件系统,使用文件系统自带的canconfig工具设置波特率,并启动CAN0接口。  p9 g( g' `7 F, ^3 B9 E" R; V7 J
    Target# canconfig can0 stop0 n' u* j4 q! l6 E
    Target# canconfig can0 bitrate 125000
    3 L8 L% A, S+ c* qTarget# canconfig can0 start
    ) q* r* c- B+ @7 E' r: Z# |5 S- a/ H
    图 29: d9 S$ b2 ^0 z* c* E! x2 J- C

    5 i( Q% L# B% O将本案例bin目录下的可执行程序tl_can_echo复制到评估板文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。
    * }* ?4 l$ O- @, s6 g, fTarget# ./tl_can_echo -help- u6 g! X. E0 N: `; g

    $ d! w. T) T, F6 M: c图 30  H  C4 N3 y% M, L* s4 N; \

    " o& D( n9 w2 I执行如下命令绑定CAN0接口,并接收由ECAN Tools发出的数据,然后将接收到的数据重新发送出去。在ECAN Tools中输入数据并点击发送按钮,可看到有两帧数据,一帧是发送数据,另一帧是接收数据。
    - I- j. X1 X  I. m1 HTarget# ./tl_can_echo -v can0
    % K& [9 ^2 D- h+ L* A) S4 t7 q1 h$ G4 F8 n+ f
    图 31: r2 p6 B9 f2 ~4 r
    2 C% B. i  K. `; J; D$ W7 x
    4 q9 Q" u( o( U8 C  j5 a, G
    图 320 y" D" F2 E: y9 C
    2 O- H  o( {4 x+ s$ b* ^) `
    可按"Ctrl+Z"暂停程序,并执行如下命令退出程序。7 Z+ a6 x# R& s
    Target#  killall -9 tl_can_echo% B4 Q( Q; `  A; H8 p

    + r6 w5 t) n7 F9 u + P  R( \( a9 I$ Z8 t
    图 33/ E* M7 }, J. ]. p& Y( e+ M7 R
    ) a  y2 {5 \& c
    • 关键代码
      ) {; P6 F* K/ E  R+ b/ V
    使用socket监听CAN接口。
    3 q' B: D+ d6 L4 |+ a# _2 h: ^, Y% q( G  p" O9 V4 F
    图 34
    : ?5 K, e9 k/ w9 L7 H& y* W5 `! ]6 `+ W" h/ B: C
    将从CAN接口接收到的数据重新发送出去。
    - E8 f- M+ ?, }3 w* y6 v# G! e" e* f" t0 d/ b4 g# `
    图 353 J. |6 j( j! V
    & j, m' Y4 ~9 f. S- d4 d0 E
  • TA的每日心情
    开心
    2020-9-2 15:04
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2#
    发表于 2020-9-27 15:11 | 只看该作者
    编译完成后,将在当前目录下生成可执行文件。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-26 22:10 , Processed in 0.093750 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表