程序的运行问题s - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8426|回复: 6
打印 上一主题 下一主题

[已解决] 程序的运行问题s

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 # g# x1 e, |+ R& Z6 F9 q

  U" p4 _9 m9 A- A' s& U* g  ^7 r请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的8 l& T: z9 W0 @

5 R" x% ^# d5 Q5 ], D5 d之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?' ]2 }0 R, w/ N- n, g

) z4 K8 [6 H, R0 B

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
沙发
发表于 2018-12-14 17:14:42 | 只看该作者
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱动,通过应用程序访问驱动去控制硬件设备。
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
板凳
 楼主| 发表于 2018-12-14 17:29:27 | 只看该作者
广州创龙莫工 发表于 2018-12-14 17:14
- c( B$ N; c2 y/ wlinux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

* }6 @) t6 O$ M- Z% Y我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:7 u5 z) l: C% `2 w& b# A7 U
#include <linux/module.h>
) J' i3 q5 `: L6 k
8 S* Y" E: c) H; T4 V7 z" W#include <linux/kernel.h>
/ V1 s5 h( e+ b; ~$ G
" ?* o' M4 f0 K. H#include <linux/types.h>5 |, \/ F# b" y8 z0 g7 j/ z: F; J

) L" _  x: f0 o#include <linux/gpio.h>
+ Y( U& m( M+ b1 V: I( t, ^4 w( X, k" ~3 b0 C' \: q$ Y4 t4 [
#include <linux/leds.h>
( m/ O# M! T6 r9 a
8 z- j  C$ \* N! S#include <linux/platform_device.h>1 B9 c0 E# t. o: j% E

) x- ]$ F. W6 Q6 h7 O! r* s
; o: v( {- P0 L1 B; X
- ]1 N' P! T) G# H& e( y) w3 I#include <asm/mach-types.h>" P' B% _, ]4 W0 N0 m$ j$ ^
" P4 N# H5 D; v" r- G8 e
#include <asm/mach/arch.h>
; \$ X) V. P1 O. Z4 ~. ]
/ d" h' ?) M% p  {#include <mach/da8xx.h>
+ S, h: z2 D& m7 ^
5 M; {) k0 s0 ]9 ?#include <mach/mux.h>8 Z" y6 {+ C/ L0 U! c
. C) p% J9 L0 z* F# M
" e+ V+ e5 x: \8 [& O/ U) P
3 G' `7 l' r0 V2 n2 E4 v: I9 N
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
2 q, ~8 H8 ~1 B6 h) f- f' Z2 {7 @# U5 K
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
& q1 @% Q# j1 u6 g0 F' N
* M! |9 ]5 ^3 o" [; d2 j. Q1 Z#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
* t/ U+ F# V5 G! E, H" N+ B, t* e: k6 j9 F4 Z0 D
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)3 K$ K6 `. g0 T3 S, O" Q& U

- R2 W  P7 m; ~) f/ E#define DA850_USER_LED4 GPIO_TO_PIN(6,12)9 a* t5 I5 D9 C* K! x
  N. b. _6 s1 g8 R
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)) m" x. Z  T8 I7 W
6 l- `+ s" R1 y6 V6 A# U. t% h5 Z* x* }
7 D, V. T% }. Y! d, p3 V3 D

% i+ ]& G. ]& `, j* _. P/* assign the tl som board LED-GPIOs*/- @9 s5 t+ Q- A& W) H9 |

  L$ x! q/ i6 pstatic const short da850_evm_tl_user_led_pins[] = {
' W, x3 t' G* z# r# u2 ~
7 a( N; a' a$ y- N0 d: J2 m% l6 ?        /* These pins are definition at <mach/mux.h> file */
8 \- E4 o6 e( ^( R$ q1 _9 i+ q# J5 r; h+ f/ x
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,) E9 A2 Z" w$ F" {% Z9 K% E

: l! [- p2 s, ~7 l0 e        -1; M7 V2 z2 N% D% R6 E; Z
4 w' \# y9 u1 m- ?: g& G5 e3 b
};
. V" k* Z' d6 Z( u# t
% x  U# m7 I" W% e- d5 T( H" K3 U% D& [. t5 s" s" ^

/ b/ d3 k( n! `4 r& O. qstatic struct gpio_led da850_evm_tl_leds[] = {) X& l( P6 k( p( e; [+ b6 I  e
: q; q( I" E; D( w
        {
5 K  V, `1 g$ r4 g& K+ k, B
3 W2 ?" K0 R, d# ~8 a( T! X                .active_low = 0,/ Y' Y$ J( a- d, g( I! F5 N  V

4 g6 Y3 [5 g2 S3 L9 N( e2 m- ~                .gpio = DA850_USER_LED0,5 c% N* h; u6 S; Q2 H! X7 ?2 Z: K
2 R! A. N/ z: G$ y! `2 H& t/ n" E& o
                .name = "user_led0",
7 N6 a1 C/ n, J+ t. {, I/ l" a- G; e- H; e! W2 X: Z: F  o. W* D* C
                .default_trigger = "default-on",8 g0 Y" q% l3 c
. b2 X7 |+ @  D* |6 L
        },
# i/ f3 V2 `5 n7 X. }/ }) U9 g
5 c1 z, L( x1 O$ L/ F        {; V, K4 v. ]( w. l  ^7 t. s

2 j! o- Y: i' j5 `$ L; {                .active_low = 0," `; f( r  t8 y  S4 S( c, ^- j

. @& T$ G  z+ [6 B. X                .gpio = DA850_USER_LED1,! P& y, x- R7 Q0 q- H! c: `
( g* t- o2 E/ \/ i7 v
                .name = "user_led1",2 C/ m: u- m( j% Z8 A
7 d6 l4 A" R9 z  v5 {
                .default_trigger = "default-on",( t( t" r" T2 e( s- ]" D' f- Y
3 Y- t6 ^" N) L) F2 b; _' R6 x
        },' ?0 D% ^' b; X( S+ o+ s

( {# i" C3 g, T$ L2 R        {0 h% S# X' ?. o4 ~' ^
) ?9 H+ h; M8 \
                .active_low = 0,5 N- {5 d- h; @" W3 m

! |3 D/ o# A4 V5 Q6 y( i                .gpio = DA850_USER_LED2," }' Q+ z$ }% h: R  t. z

6 N/ d, ^9 i" r) {& H0 l. k                .name = "user_led2",: _7 A5 V/ d) l& m7 N
( Q* O: n) @4 M- h# R; m
                .default_trigger = "default-on",/ c0 [+ }! I) O- Q" o, `
4 t% _4 B. Q& E. V$ J" d; W
        },6 R! [5 y1 u2 f% j( U) d1 E
- p/ P: s7 P& a1 \" r/ q
        {  A' H2 T. O/ T1 J* ]* S$ O4 V
) j( J; F$ ?# t# i. k5 Q
                .active_low = 0,1 Q: V0 q% o7 R
/ K: V  R- Q9 ~/ K, L/ w& ?
                .gpio = DA850_USER_LED3,
$ w6 \3 D9 b8 W! s: Z
$ {" k) w: l- |0 Z) l) o2 b                .name = "user_led3",& Y7 k, g; g" d# @7 g  ^
% `& O: U) M; z" ?2 ~1 f
                .default_trigger = "default-on",
5 k/ P+ H, ?& L6 _0 r& d7 Q# e# W* k) }1 L3 a4 M
        },
! [1 c1 w' B; U' v/ L! \8 L! X8 z5 m
        {
( p  b! k$ ~* U- X% @$ d! C3 S7 {
                .active_low = 0,% Q& V7 i7 [+ x& X6 t; a; Q0 J

' t- u& c: m. g% a# \4 d- H# c                .gpio = DA850_USER_LED4,
1 r& i# M: P, O5 b3 a! C7 a
; o2 {/ W$ w/ H1 A) z1 ^& G0 Q                .name = "user_led4",6 P! G0 x8 y: j0 t# X, \& M

5 [4 _# J9 F1 h, |( V                .default_trigger = "default-on",
& C7 z$ b3 A5 [4 H& }: A8 j% |% V& w) j% U
        },
3 x8 |8 N1 Z9 W
! U2 l  I  e- i, i8 p. d9 H+ a! R        {, c3 G( N3 J8 ^$ K3 A8 r9 e
# ?- E" u! m! b/ Q- V5 y
                .active_low = 0,$ I& }! x0 e4 j+ c
: E' g& h% X  N! L# l3 X3 n& J
                .gpio = DA850_USER_LED5,
. h: o% I8 R  Q: M- \! f8 X
& S+ f+ I2 G% V  M: B' {: V: Y- S                .name = "user_led5",
/ J/ _1 n( F: H2 M4 f; w9 r7 ^+ u) u! c% k- v1 H4 {: ^
                .default_trigger = "default-on",% v& K( K. i8 W  ^. ]4 ~

. z& x" i! h- F* a9 O        },6 U$ |- ?* Q1 u3 K

- F" w3 y1 _0 N2 S1 J$ U};
+ H8 O/ `/ }3 v, X# J& ^2 X# n7 W: t6 f+ A

+ S7 o& ]/ J- v% i: N# j& `5 i) F: x
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {. g$ c: k8 j0 `5 i( m* a
: A# Q4 g2 P+ L: l5 O
        .leds = da850_evm_tl_leds,0 j, O6 x, i# q+ w
0 `: v/ ?: f( K# Q
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),% p. Z' i5 ^$ \& R7 x* f: x

& n2 z3 r; m7 R9 O};
+ j* Q6 b) q) [2 A2 H; r+ k9 Q* Q# q, [

: [$ u. M$ F& A
, G: H( d3 q" x+ G5 [) `9 N3 estatic void led_dev_release(struct device *dev)
6 K4 `1 r% d+ c/ c3 J5 w' N: n4 |2 V) w
{) t: q2 Z% `: x" b7 e9 {3 b6 I
% G( w. y3 X5 K; _
};" j" I  P; K8 }: C6 B) u
+ Q& E" B' b, `: L

& S' e4 u  {- ^' b7 Q8 J) i/ q) {5 W! [8 ^% b2 P7 p" S8 q% Y
static struct platform_device da850_evm_tl_leds_device = {1 m3 x1 O3 _/ k

- C( I) v) g3 D5 ?, A( ?7 X        .name                = "leds-gpio",
# \$ ?' f6 A$ ^2 w1 r5 R- w- q6 ^: A+ K) g
        .id                = 1," W7 G3 s( P& C! \) j

! i; k) B  C/ z9 v4 l        .dev = {1 d8 r; {' k) x# t' f4 u
) N8 J' Z8 J; I! \! ]7 w
                .platform_data = &da850_evm_tl_leds_pdata,' i3 X1 W4 P$ A- D
* i# Y% n8 W. W$ m, Y; C
                .release = led_dev_release,
6 d( j8 [# A( x& Q+ |
2 B+ Z2 T6 v4 i" Q0 H) E! \: N        }
1 `8 B8 d2 h3 `! ]% R: X% _7 U" e( Z1 r% P
};
8 Y& j3 L8 {  y: z/ M% u
- N, a/ P% M5 o# P. j& \+ v  A7 f! l

$ k) Z% J% D7 P+ A' H9 Bstatic int __init led_platform_init(void)
5 L) t! m$ _6 O; l" {8 o4 u# D* q, |1 G9 u2 G1 f/ L
{3 {5 d/ ?$ O6 ?% Q- J* i( f

/ o3 G( y4 U! U8 P, X, m: G        int ret;) e! Z$ T/ ~( h, {7 P

) a% d# t9 S7 Z. J  |#if 0" O2 X% l" P; z9 b4 a

# Z7 d' E6 G  Q5 {        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);# ^5 D9 V+ \. g& b
$ q7 u7 N" r. l
        if (ret)7 U) L7 G+ I8 z& i9 w6 U- U' `1 r7 Z

$ ?$ j6 Y4 n# N8 i0 J/ F# S3 Y0 b                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
7 K; S5 J( \6 V' j7 u, I& N! ~% c5 N* B
                                "%d\n", ret);+ i6 j& ~. h' X5 E
3 r* y3 i6 R3 p7 n. n3 P
#endif
, o7 ]1 |1 T8 e! G9 }6 C$ \; w) ~. ~0 s& v
        ret = platform_device_register(&da850_evm_tl_leds_device);, b% k" ?1 D4 V5 M" x* J# N8 ]

" F# C1 ?( [% ]+ [2 Z# Q        if (ret)
# `4 {+ S4 y- X( E5 h; H0 |: p, h% Z, I& ~# D9 j1 a
                pr_warning("Could not register som GPIO expander LEDS");
9 S& `  x3 P* s
- V' ~; n  K, p( ~: d+ E        else6 D$ P* ~' N" r

& n: I/ _( w2 E5 Q$ F# F0 z6 A                printk(KERN_INFO "LED register sucessful!\n");
/ p+ p6 h" W' c  B, x. J! q/ K/ e* D. h9 t1 A& Y- {
  E# v" b7 E" e* u0 v
5 j/ e& z! b7 \3 N. I# q
        return ret;. W, g( k! P+ |! x3 X" z, Z

! t& ^; C% l9 e4 T9 F9 S}& O) \, q, @( [: C" g% G8 k2 z3 z

+ k2 J6 @" I2 B+ m- ~+ H
! G( p# }2 I$ W; Z5 C& j  j
& G, Z+ S4 L! Q7 Fstatic void __exit led_platform_exit(void)+ E+ s3 x- A1 n0 K3 S* A$ x
" u4 x* e4 M3 }. s% t; ~
{6 L' X+ F3 B' f
/ V1 l% `1 y$ m/ A0 y
        platform_device_unregister(&da850_evm_tl_leds_device);2 ?: x  w7 K8 K( o; X4 R3 P

3 C/ Q$ o1 u7 f7 ^- {
' g( A, P' @: z0 I) `( ?+ Y6 b% A" a
        printk(KERN_INFO "LED unregister!\n");
) R; S/ T7 v$ P0 n, J, Q7 {
+ L$ R" U% s: ]5 w}
5 U" M4 f$ l* s1 K3 Z
) s& M; X7 o0 b
0 d" o% X* R; j! X$ m$ w
! G# ~& v( T6 @. s; Tmodule_init(led_platform_init);( L6 _5 d) W9 n; l5 S8 {
7 D  p, B1 p7 f2 j3 W# b
module_exit(led_platform_exit);( w% e4 O" y7 M8 S
% H% E& V& z2 j% k, f& O

2 C( f  V: u; s( A
4 f6 P$ i7 A% [9 l! |1 ?MODULE_DESCRIPTION("Led platform driver");. V1 E! L( X  X' l, L0 u9 |

2 u* v# R( ^% K2 kMODULE_AUTHOR("Tronlong");
; i; Z) M+ L' b* g& G" x' O7 |4 @# _8 z0 p
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
9 L! I- @& w* u% P/ g; v

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
" U! {/ {# h; E) G  O您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。6 C& c7 i1 v$ H1 B: l. |8 K
...
( L/ G4 Z7 C2 k
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
+ {; b7 O: j0 h+ Qhttp://www.digoboy.com/video/id_4408.html
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
7#
 楼主| 发表于 2018-12-17 17:29:12 | 只看该作者
额  还有这个视屏啊  早知道我就不会问这么多了 谢谢提醒啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-9-16 03:00 , Processed in 0.047833 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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