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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5701|回复: 6

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
发表于 2018-12-14 09:13:56 | 显示全部楼层 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 # r  F" N- ]1 F$ v: ]! B

+ \1 k9 B5 o* k- h请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的
" O2 d$ r8 L  K: s7 ^" w3 F. [+ g" `2 q! h& R% x% C; E6 o
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?0 g/ }! j2 y6 Q9 r7 W+ ]$ }" d

7 _9 d; y- |7 d. c

本帖子中包含更多资源

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

x
回复

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
 楼主| 发表于 2018-12-14 17:29:27 | 显示全部楼层
广州创龙莫工 发表于 2018-12-14 17:14
5 ?6 s6 f" _: T+ h7 Hlinux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

5 n3 q& ]% e  d5 V我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:$ U2 J, G7 j; g% q2 m( Z
#include <linux/module.h>: H) Q1 p0 V6 I, v
$ G: P  I" U% ^) C% d
#include <linux/kernel.h>. ?4 _; m4 X  U: N1 U
- f& y3 a- g0 y% U" U8 g
#include <linux/types.h>7 w6 Q6 c: F2 v2 _) R

7 U; F. L) S! R3 K5 [: J#include <linux/gpio.h>7 A8 R& J2 c2 O0 I/ v" x3 N
7 g/ G$ F& S% n2 A
#include <linux/leds.h>
% o& q' b+ o$ E; g8 k- y  x) P3 @. I/ {1 I
#include <linux/platform_device.h>- N, p0 p9 `6 [; n  [* R- [7 f
* Y8 X- _  z: g0 u0 p0 X- V
9 }6 D+ g8 ?" K& @. K

) p0 Z* `, X2 g$ M#include <asm/mach-types.h>1 _6 J/ n# j  Q  [4 e* a
1 D  B' L4 K" n; x
#include <asm/mach/arch.h>
9 q; s% i4 C0 ~/ V2 z& X) }' _% i8 |# I( j
#include <mach/da8xx.h>
; \( e+ ^$ o  W- O6 B  @/ m- ~" C) R, S4 c% _. c
#include <mach/mux.h>
8 J7 i, d6 T( F" O8 W# b5 d
' \: l3 t6 ~! Z9 P8 P2 N5 M2 o5 |$ ~3 ]$ K+ u

9 b' M4 U6 `, l2 r7 ^9 t#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)7 y8 x$ j  D2 W# S( G# L" F
4 o/ |* F* Q2 U6 `1 a. \. `( V% p
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)3 N0 m. g- g3 Z2 D+ g0 q0 D2 D

$ \7 z- O$ d# r  o! E, r#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
) Z* |  h/ P+ ~2 @5 B: Q" @" M3 v1 j0 Q' D9 n( F: {5 t- {
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
+ Z# U) T5 M3 y; U% }0 [  O# K0 {! x9 ?/ S- G/ k1 a( w
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)! @/ t1 F6 ^$ n7 L# w$ S  j
: h! [, r! \5 Y! G: |7 d
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
0 n" }2 l+ l3 ]: c/ K- |% \# x" b5 ?6 V+ I6 U; S2 ~1 z6 Q

$ u0 Q& f# W) E5 X0 L7 T  s6 ~
% D/ z; n. U! K& h/* assign the tl som board LED-GPIOs*/
6 W' _% V/ g. Q/ j3 j' H# l
3 f, j+ K* t1 [* |! m+ J" \3 Ustatic const short da850_evm_tl_user_led_pins[] = {9 B1 c# b+ S  y0 E' J- h

0 |. i$ @: t6 V, I6 b! P+ V        /* These pins are definition at <mach/mux.h> file */' _' ~3 D# G' D9 |6 N# P/ ]7 C
9 W: T8 K; g3 w+ H2 l
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
- l7 `% ]* I/ A- v6 W* B$ Y1 m* J2 e- e% y- O& b; h
        -1( L$ ^' X4 j8 v# d0 [7 M! l
/ g8 K; K/ L. `  \
};
2 r7 X. @, P- e2 y
0 e, t) _0 i6 O4 H3 z7 m( M) j+ J/ [$ C2 J+ ?4 ]/ ^
* a; b  u4 o; i% ?
static struct gpio_led da850_evm_tl_leds[] = {
: |( J& U  j9 u' R8 P! y8 t. h8 N0 l7 t/ ?' w4 s0 H
        {
* E% y1 T8 L" |9 w5 `$ V7 p) y: F+ w
                .active_low = 0,0 T# D8 J1 \- m3 P8 ^

. Z" P. i! {4 A7 h) n) b0 r6 a6 l6 S                .gpio = DA850_USER_LED0,4 n7 g: y& i# d5 n. x2 H, @

! Y- k; x, s, a( R' o& T7 U$ t                .name = "user_led0",7 _! u5 F- N; T6 x" N
+ V3 r7 U; ?2 r# ^
                .default_trigger = "default-on",
5 S: T8 n/ }' Y- S2 h- J: J; b8 K2 J( ^" T
        },
) ]: _" F" ?* g$ B2 P/ Y0 z
! l% W" s6 @) y9 u3 ^        {
. h# i& r8 J4 A1 Y  `; V, ?0 y7 Q1 W  R( x
                .active_low = 0,
+ K. i9 U/ t: ~  ?
4 @8 ]2 g: r. e% I                .gpio = DA850_USER_LED1,
; g4 {$ _# n5 C+ \# d7 Z8 J1 ?. Y# C0 g- }8 ~" E1 W
                .name = "user_led1",
2 K, N" s  {# P8 l5 v0 n7 P0 |$ E' A  e' k7 w
                .default_trigger = "default-on",
0 o9 Z9 d2 f  X, j& T3 D! K! _  \1 e# q) s' s3 h% |
        },# R5 `8 n0 a' y, s7 n" t/ X6 u
7 D1 n7 g1 q4 n% {* p: T. f* C
        {
) l. }( x3 y+ X. X6 V# h+ V- v: U6 ]6 G+ K
                .active_low = 0,' Z8 O$ ?  a1 m6 u" m5 r+ E+ _9 m, @
1 u- d9 Z  A6 \# z
                .gpio = DA850_USER_LED2,
. Y* l0 V, ~) o; T7 l" r# Y# F8 E! Q3 W1 B# p
                .name = "user_led2",# }1 ?* W  d4 }0 n& Y, v+ ?

3 g' `  b$ a6 w3 O                .default_trigger = "default-on",
8 |  T3 h1 I" V3 F4 s0 Z1 `4 ^& |/ E4 U- x1 w3 D
        },
0 a* W+ R: K" D, i, g3 V2 T6 Q  V3 Y( E) g2 r5 ^# {
        {8 w2 P/ Y3 C9 S( Z
% O0 h; L, f1 ^) a- i
                .active_low = 0,
5 \6 ]: r  }. E& C9 L
$ W, _6 y2 ~4 C& ?$ A4 S                .gpio = DA850_USER_LED3,8 E% k/ t4 A2 t- O( w7 q6 o; R6 t  t

2 T8 r$ Z- `. a                .name = "user_led3",
: l; J! S" W0 }  W( E+ u6 A4 q( @8 V( N& V/ C
                .default_trigger = "default-on",' n' y% K  a7 H6 B
  p' c  X# f' o0 F+ f
        },! H- q, z  z! Q

% g. m- {1 x/ u, ~* |$ S. e& h2 X        {
9 E  H, ?, y; U* K
2 c& i7 ]& I  k3 l6 Q                .active_low = 0,
% o% x% G, [- [4 h' D/ o
5 L" m* b0 R2 f. A% d1 ?% j3 H                .gpio = DA850_USER_LED4,
& F2 M, u2 b& e/ |/ Q/ p% o
6 e3 l; B( F# ^, U% M. [+ d$ ]                .name = "user_led4",$ j" r; Z3 P6 @. @& W
. n3 c  v0 l9 w1 g
                .default_trigger = "default-on",
' F! R# g7 ]; D* u7 x5 c5 v* m
2 y3 R0 J3 {) x        },
. _" {3 \5 v) L( X/ c( ]( J3 X' p3 e! N0 A: Y
        {- k' f* Y4 m, e+ |. F4 A( K

) r5 x" B9 V7 d8 r                .active_low = 0,
, p# L2 T: c: I, s0 g; ?% k7 _9 z; N3 [, @# d+ Y7 Z# j, {2 \2 k
                .gpio = DA850_USER_LED5,
1 `* n' O2 v3 n- S7 Z' D- Q( y% |; q% t
                .name = "user_led5",% B* ^+ D# {: q4 m$ W( J

" c6 L3 w5 Y) S8 u/ v                .default_trigger = "default-on",& L- y; @1 ^2 R- b8 ?, r

* @3 G( m9 l5 a5 U9 m        },
; a& O$ m  g! Z! y
$ \9 O8 s: S! v' i0 u- W};
& j& b6 k) H7 K$ d$ S" d
+ W. k2 `! x6 c% B. ~8 ~& _
4 x& U3 F7 R: B0 ?+ y7 i5 X1 L( R5 B2 L
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {3 e3 o, r( F- @! E$ K( p# m

- j9 ]) e+ G1 f! r! H        .leds = da850_evm_tl_leds,$ Q' x, o9 q- ~9 N3 b

, b- C# E! |$ J7 [8 a        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),# `1 @5 I; i9 l: d, Z

. m8 X4 f* u  f( R7 y8 t};
% Y8 h; N0 X6 R2 R0 N6 K# o- d* ^" I5 V

1 H: m6 M2 L2 ^/ h; v7 ?4 y. R9 j" g/ R
static void led_dev_release(struct device *dev)+ Q1 y% N/ @1 F4 e

/ w* {: h: x* \# d5 b{
) {* c$ ?+ x9 R/ T" D' }6 v! q  H( V
};
+ A& b3 U6 Q+ }' u9 b; A- l9 r+ `( W( f! h& v: i3 S4 c9 @
" P) {% z  S/ E2 |6 n$ Q
' h/ r) U& y3 ^1 ^
static struct platform_device da850_evm_tl_leds_device = {
1 l. p6 V7 o6 I, P$ ^, q- _, Y
: p( M% ], Q! F; a5 P4 V        .name                = "leds-gpio",5 x9 T  B' }1 u% G
+ G2 p- G+ u% U# w
        .id                = 1,
% a4 H  N6 j  a4 N. l
( I. V6 B) I8 Q/ e8 a        .dev = {
) i1 `( k5 {1 @, |" |5 [3 f6 O# W8 }( p7 v% Z5 |4 g! v6 {
                .platform_data = &da850_evm_tl_leds_pdata,6 r) \4 m( X6 H
- I# m+ Z9 }3 t& p  U+ D1 [, ~
                .release = led_dev_release,1 f1 Q* l- `+ r7 w, P3 T+ }

% C$ T& f0 Z& l! D, @        }9 l* z9 w0 J9 O( z1 [8 E; h) O
: G, c7 }9 x2 U. v0 X! D) c, c
};
2 @! |  [$ ^$ r0 l: j8 U! I8 g0 G& o: d4 }0 ^. ?  Y1 w
+ U( j6 l) J' c( x8 c/ S7 Y

9 A: @. u7 C! i+ u* {& jstatic int __init led_platform_init(void)- Z5 b1 c) x: O
. t7 |. Y4 e- L
{
; W+ {  u! L7 x% |+ u+ `% P' i/ d% N. `* g# F/ w8 {) `- E, S( D
        int ret;% p, Q& g" r/ d1 \' G! P2 Y

* `6 `$ L( E1 \* z. W#if 0
( w3 s. y! G' ]- ?/ V. `0 Y( ?# P4 e( ?- x5 i  M6 l
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);+ v8 R- j" H$ A& a
3 Q* r/ c, y% n3 s: j
        if (ret)  Y4 j0 O1 n+ @$ m( S9 A; |

' j2 Y2 i9 _1 @  g                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
% l1 }6 G4 p3 `8 m5 q$ S5 r1 l* D% X0 a+ x
                                "%d\n", ret);
" S8 s$ H9 h6 W, N" e
* G8 u& `, M* C#endif
0 i' D3 U7 d3 i5 l; L& F( K# h$ T9 s$ M3 q: ?: N& Z, n
        ret = platform_device_register(&da850_evm_tl_leds_device);
# I8 a' X* c5 O8 e" g5 j
  n' E3 G$ s' O0 R- |0 r! R        if (ret)
+ v4 X' j, n- Q4 B1 g+ V9 o+ ~9 m# ^8 |
9 K; g2 Q0 q! c. l- S( s' H                pr_warning("Could not register som GPIO expander LEDS");4 I; g- [$ H: \, I# j3 F, ~% \2 A9 e
0 k, z# a3 Z# S$ N0 Y* j
        else
) }9 n. h0 g9 c, n. w0 I
  S( T/ d6 K4 a- W: c                printk(KERN_INFO "LED register sucessful!\n");
. m4 s' S# s- M+ ?2 f1 C' s/ K& G
8 i0 X; ^. {' P% f
: n7 A+ H1 g/ n
        return ret;
5 V" X: g9 ?0 n9 r7 h
8 l. V4 R( o2 T+ D}! R- Q& l, S) M: P2 ^0 Q  \
# H% R6 e  h0 `  k* B5 V

; a& v: x, W( q5 `1 ~: r# W7 Z6 Q$ j4 n
static void __exit led_platform_exit(void)
  _  t  j" u% h  N1 v+ }
: N# T/ w$ v7 P- Q{
# ^( v' x4 {0 H" x8 B, Z9 R
6 A, S$ \7 W% P3 b6 ]$ Y0 q/ l        platform_device_unregister(&da850_evm_tl_leds_device);
0 e1 z% s, _$ O* a* X6 \
+ R1 B3 l! X3 t9 ~$ f$ c5 r* x3 |/ F) m1 X: H0 m( e/ b

0 S) `9 t6 }$ T( @" r) g) R        printk(KERN_INFO "LED unregister!\n");
  ?8 `/ x" o5 X1 u
: x& E" F" ]8 X/ T: D}
2 d. I$ @, }' ]# Y- n: [  o. Z7 E; I8 `. T9 h# Y2 [. J& G5 g! n9 @

+ `7 H9 A) ?; `: {" b# D" T5 z' X' R* g* W. ~# ?
module_init(led_platform_init);# @. T8 N2 ?) `. t
+ T, T. w' a  _
module_exit(led_platform_exit);
0 b$ `8 f% A" f5 r* R, K* u6 j( X
& f0 T0 p+ x" @. T+ W6 }5 ^# [+ r. C
2 x) s$ @( k3 |! i  [6 \& w9 n
MODULE_DESCRIPTION("Led platform driver");2 h5 q* M, c# L0 A# B# o

! w& A$ B/ }# m) @$ n6 D2 GMODULE_AUTHOR("Tronlong");
; _( a7 q* O+ m. G: L; k8 ~$ _; ^! M! m$ r
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
发表于 2018-12-17 10:32:23 | 显示全部楼层
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
& F( N* u$ f- v% F) Q( S  b0 D

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
 楼主| 发表于 2018-12-17 11:32:31 | 显示全部楼层
广州创龙莫工 发表于 2018-12-17 10:32/ [0 q1 D& g( z; _; |: Z7 k7 |
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
- J7 E6 V" O; c( M ...
* _& S( _& \# f: Y
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
发表于 2018-12-17 17:24:29 | 显示全部楼层
嗯嗯。可以看一下我们的视频教程。9 P7 L% F: _' P- R/ i1 {* h) z
http://www.digoboy.com/video/id_4408.html
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
 楼主| 发表于 2018-12-17 17:29:12 | 显示全部楼层
额  还有这个视屏啊  早知道我就不会问这么多了 谢谢提醒啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 02:17 , Processed in 0.046006 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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