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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑
9 X6 Z3 x3 ~1 K$ f
# }/ v( @% d/ [* W/ d5 U请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的
' `2 W9 q9 W3 V6 E
2 l' s$ }. n5 Y* }" I+ d$ B% O# H之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?
, ]1 v3 N) }7 j* R5 y4 z; i4 j- c# p+ f6 p6 s% B; Y

本帖子中包含更多资源

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

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

使用道具 举报

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/ K$ G" Y+ l6 O/ Z$ e
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
+ J5 N/ Z3 {3 b1 `5 [
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:: Y: X" @( R( P& O+ M
#include <linux/module.h>
- I0 l8 o. P3 `( i$ ~* r6 F+ D' R1 Q( r2 A5 Z, r. \
#include <linux/kernel.h>
0 P# ^0 x( s/ C5 }8 f0 L9 X% s4 j! q
#include <linux/types.h>+ V: J1 B5 O) o" |6 U$ f! b
) K) c; r  e+ {5 y. V
#include <linux/gpio.h>: f- h! R8 H% p& q' \% a9 j
8 U& c+ }& l1 E( c
#include <linux/leds.h>7 S! g" l- W7 S, H; Y+ X) H' c5 \

  Q3 b( C& D% P5 k5 e, W% B5 I# d#include <linux/platform_device.h>. F6 k* T- ]! }# q. I& w
$ O; N' f8 u7 ]! q+ B5 X9 T3 {

" O3 J' A- z4 Z- y3 ^
( D0 E1 i" z7 Z# |: }- A#include <asm/mach-types.h>
9 c. L" A" Z. i3 b. P% U( q1 a
* Z3 K4 s! z2 M- R2 r) M: O#include <asm/mach/arch.h>
9 g% m8 P' K5 s8 A/ ~4 Y1 ?0 |5 K3 B$ K! C
#include <mach/da8xx.h>
( b! v" j# b4 J( f2 m
0 B$ `1 N* v3 k% h' J" W; F#include <mach/mux.h>/ V) C4 T3 w" J0 g/ I

1 d; E4 _8 k4 k: a# W- w& W
( [- v0 ]+ D9 W) f: W
) Q" ~) t/ b( |! z! w) @# R6 c#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
/ Z# {) B. A( z9 M0 A: ]/ Q9 l' ]1 W6 P
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
1 m0 J! O( o) l8 P3 B" g% t# P# b& C$ Z1 Q, U4 t) |- I, v
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)& U" x* z& v; D+ e
% K9 z( h0 q0 \  Y
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)( t4 O4 ?8 {9 f' T/ R$ W
+ m" H( Q+ W; s/ p0 U
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)/ T+ f7 D' F, F' n- p* B: m
, c; \& \0 c3 u
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)# i! x" V) q7 r  V- Y( H
3 q; Y# m5 K* `7 \. S' z/ S  E
; `& }' |+ K/ C% a+ z# l4 o

0 X: @4 g3 L: C7 t: ?0 x/* assign the tl som board LED-GPIOs*/
6 x" l+ G* F/ j) V2 J: i* X1 b& {2 T: f( E
static const short da850_evm_tl_user_led_pins[] = {
: f/ L: o: g) J) P; V
. T& x) ~, b# p5 P% q7 Q        /* These pins are definition at <mach/mux.h> file */
5 c3 u0 H! T8 t& H- x. R* r$ g2 `0 l7 d9 Z2 R! |
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
/ J2 s$ o: S3 _  g' ?! k, d" m' h$ w6 L, c  ~, a+ f* M
        -1+ C* V& O! d* G) w1 Q  w

2 Z2 ?8 b0 V6 r' K1 E/ Q};0 l! n- Q( @/ z2 M# _6 A

% U' y1 T3 j, Y$ U7 R' U1 R3 h3 Z0 }3 G( I; e7 J% |

8 D- ?  J$ B2 {* bstatic struct gpio_led da850_evm_tl_leds[] = {
% R8 w. W. B) P% G/ b5 |+ @1 a: {. U+ n0 B
        {5 r! g! w2 w# K8 p7 K
7 U" A! `& n& [, f7 B- D
                .active_low = 0,1 d' Z# k  F1 c/ g$ j" z" a* O# \0 h

2 s3 |: ~7 h4 f4 A                .gpio = DA850_USER_LED0,
% {! l7 h4 n4 u3 S( S- ~+ Z. W# h& E
                .name = "user_led0",
$ C1 C; u3 B  Q. C% k1 U- L3 e# Z1 A6 ]% l; d3 n
                .default_trigger = "default-on",( j+ [( b' O4 g$ S: w
& y% |5 X4 {$ G9 `
        },
9 Q% K" |8 \) _, f9 `' b8 S3 x' z/ D2 y" j# D' b
        {
8 ?% D7 O- X( w! [! L( I( S8 \6 E2 e- W3 ]1 T# @
                .active_low = 0,
: a6 o, u( R1 t4 W6 a% i! f3 b' w$ j  Z' b8 d7 W
                .gpio = DA850_USER_LED1,
4 f1 q- X9 h/ a. Q' p4 q" p- s9 v: K, J$ t
                .name = "user_led1",
% I' M( {+ I' X# R9 X* T* o" E8 X8 e
                .default_trigger = "default-on",
4 h5 N8 i9 I6 {
! o8 j0 g$ X" ]* |1 S9 h$ C        },% l- |1 C' U2 N4 ~  \' ?

; F9 @6 u4 l8 j  i- \% [3 E- ^        {
# z0 e/ @" `2 r# f
+ I( O/ @- r+ n                .active_low = 0,. B+ t  l3 u: x0 X- l2 A7 u
7 _2 u) u9 d( N6 t* @$ w
                .gpio = DA850_USER_LED2,' h! y0 l5 N. I/ E" H
5 \( M5 t" M$ ~. O+ M
                .name = "user_led2",  \0 u' s9 n9 o' L* f
: o8 P" N0 [) v8 _8 i# m
                .default_trigger = "default-on",
8 k) B! j8 }& t5 d8 T: f! A; \! m
        },
# }9 r) E* I& r9 _( r  y4 j' C
. e. P3 E' h2 h) F/ w( q        {. {* _2 q4 }: J0 f! E+ U) z# @* O  L6 O
6 {3 z) F! i: s0 [  d1 k; T
                .active_low = 0,9 Y9 [1 b  k# r1 C4 |
$ m9 e) i% \4 Q% i& l1 y! N2 @
                .gpio = DA850_USER_LED3,
  [- Y' k- e% z6 }0 k( \+ Q) x( X' ]- i% J
                .name = "user_led3",: b; I1 m/ v% }' E8 e  L- Z

7 \) \6 {% u! V; @, s                .default_trigger = "default-on",: ]/ b7 @5 L2 e6 A' s7 R% w9 n

& b2 [& D1 p6 Y2 L) k6 T0 X( e        },
5 C! \0 [% g/ ?( C7 X, s6 k) B6 A2 S  Y0 x7 ]6 _2 X. p
        {" A1 u1 q1 O: m0 N

! _( z( ^; D" s                .active_low = 0,' C) S3 q' H$ j+ P5 h
/ W8 l: @3 y3 @+ U2 x9 p  ]+ \  P
                .gpio = DA850_USER_LED4,- m- M: N8 z8 O. N" v5 [* ]' u1 Z
' S8 y6 O( f* A0 ^$ D% J' E1 Y! J
                .name = "user_led4",
6 z- r7 L/ B$ \2 K5 x7 L' x% T! Y3 A) t9 i3 f8 z9 C
                .default_trigger = "default-on",1 W! ~5 v" f# W+ \9 I$ h5 K

$ B; U7 ^$ H+ Q) E0 C        }," k+ I6 [. Q; P: A+ f& g

9 O" `5 k6 C6 t! t        {
  h- \" @5 y/ w3 S- ~8 a9 h! ~, Q5 ]% t& m6 ~( G
                .active_low = 0,
! w' e" P, h1 |2 ?# N) ]5 ~: o
& X, A- ?: t3 M/ p3 ~1 e2 B& C                .gpio = DA850_USER_LED5," W* c% ?) J2 x1 ?

; ^5 E# W; ~( h/ A                .name = "user_led5",
) v  G+ f- s6 y* Q; |. E) O. Z& m5 m- M0 d
                .default_trigger = "default-on",9 r" V2 ]# ~  |7 F3 l5 G9 L

; n2 y& y* Q" y        },
4 Y8 r  y3 r$ g9 t6 Q8 w- z& v/ F1 G& {% v6 H: Q+ f* G
};
4 F. y* n% k3 ~$ D  I
! \+ k0 z- o! l' k0 a. t) L- s1 |  K/ g" {% R# q1 a% H5 t

. g: V1 R2 G$ w2 C. A( U8 ~static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {1 d; o* o& k& }( N* H4 I' O
; o! I# t+ J/ g. s5 E+ \. W
        .leds = da850_evm_tl_leds,: v4 X6 X/ [4 f8 |7 P8 W

, B2 c* [- {; M2 ^9 P        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),# F; x, ~6 u7 ]  a) w5 c
4 w" _3 K# x2 |# T! n" J
};
3 k. ?) @8 g2 N4 j9 ]2 L: ]! P: I( v2 M& r. w+ z0 Z# q

. w  H6 y& i$ F1 g4 w. S' }! q0 o/ `" M+ H% s
static void led_dev_release(struct device *dev)
# R9 C3 [: C8 L* J( I! T
( p+ ]8 y, X8 A2 \# Y+ f* z) y{! O2 j! w$ b( a! C3 t8 g

# j  a, f" N) W; K: i};
; ^3 k1 j8 S5 K7 W8 T/ Z4 p9 S# N" ]; R4 ]) D( ~+ X8 i. ~

- U' |( d# z3 p/ R
+ K2 e1 W; c  s( m6 M5 O4 pstatic struct platform_device da850_evm_tl_leds_device = {0 N& G& N/ o! L9 Q) i

! z: U! e- X( h, S        .name                = "leds-gpio",) k% n5 e) b% K6 x6 {
* j) Y2 _; g* I$ C$ i9 l* a
        .id                = 1,
" e, e9 ~' c( U3 p1 w8 @' {0 g+ d, G! A
        .dev = {& X1 o: |" X, S$ R3 n5 F4 Z

1 F% p; U4 N& l: C& `% ^; i# Q                .platform_data = &da850_evm_tl_leds_pdata,% o3 p& U" i3 |  b% e

" ^, d' \9 l6 J                .release = led_dev_release,! R5 V8 l1 C( g: V

/ `/ p* y. O, o0 ]* m        }- K2 {7 N+ u+ F4 |$ X

0 T, E0 w/ l1 A. Q+ x% V* ^# B};6 G0 _$ A' T2 c; v/ M

3 C: c1 t! ^: b3 i
' h- }+ }! `8 Q* h! `
+ K2 z( f# B  ostatic int __init led_platform_init(void), |  s% ?' B% {; b6 D: y9 i

1 J: W+ t, I1 w1 q9 a1 _& h6 i{
0 z/ I  i3 Q, r- m( r
) }2 P: {/ C; P5 N        int ret;6 f1 I+ t  g# P. K) M& N0 m* u

5 a" E% f4 ~0 Q3 A- ~#if 0! m) p+ X0 C. U, Q; a! J: g
+ P: [+ {* v2 }2 x: K7 ]" R
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);+ e  g9 z5 g5 ^7 r. S- O

1 e! q- n/ E  U9 F0 \" x        if (ret)* D5 Y2 s& b: V

  R4 ^& j; Z5 v, j/ {                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
5 J% y( Y/ l: }" v1 ~
: B3 n1 g4 \0 [  }" ?- k                                "%d\n", ret);# a9 U7 @/ [" ~" S. H- P; `1 T: f
6 @/ w. s' T4 e' p
#endif
+ A0 V0 E( I  H! J; a+ A, w0 n- i: h7 A8 v9 [
        ret = platform_device_register(&da850_evm_tl_leds_device);# f# u) l) C8 ?: H$ `# c4 D' o
, h6 F1 N4 o3 N" l6 v; v
        if (ret)
* w4 c4 ]$ J. Y& l# |; h8 l
" Q* v. Q, b9 ~9 ?9 K( m0 @- ~% t3 F                pr_warning("Could not register som GPIO expander LEDS");
5 V+ I* z; l4 D/ z( }& k. @
, y/ i/ I; y8 R- g        else
( ?. k& V9 w/ ?0 Z
- a7 X; {; Z4 l+ f2 {6 }5 j" i                printk(KERN_INFO "LED register sucessful!\n");+ H4 t  I0 \- c

0 J- t1 p6 ^. V0 Y- d/ F8 n( F! E+ m3 T6 l# J
- N- P: g" e3 }7 }' g7 }& \
        return ret;$ s7 y  ~/ E  l& a" G$ K

' k5 s2 a. c9 l) R! c- M: P+ Y* `}
! b3 q6 y) i9 m, d% [/ i" g: P! l) I) A: [8 w
2 g9 a6 W" }# \

+ ?; g+ ~4 z5 {: M5 A5 D% Sstatic void __exit led_platform_exit(void); L  P. p$ x# W* K# f1 o  r
4 n: T0 s" D2 q5 T
{
8 R$ r, j" t% V( I) t% S
+ c2 J& T: `6 f, H6 p        platform_device_unregister(&da850_evm_tl_leds_device);, j/ e) F' {8 g/ }. n# u; }, _
; P, e' x# Q' Z2 W, M
* ~6 T2 q( B, m6 q
* g: o2 Y$ c  l
        printk(KERN_INFO "LED unregister!\n");
2 ?8 d" q+ W9 H2 u# y( W  n6 d' `; q0 i4 g4 ]5 I
}- D( R8 ?$ I8 O3 a5 ?- c
  o) l% y8 a) M) q' q
/ O( r/ }- U! e& P$ C
4 G# v/ |. p/ L/ e
module_init(led_platform_init);
. @7 {( [8 M* o$ D: r9 l  V
* d( X' g2 ~# g% I1 D' E& xmodule_exit(led_platform_exit);, Z' ^; a7 E9 B1 ]# s% g
# s* o/ S4 u2 H7 R# _

2 T/ T: a+ K9 y5 a" b2 u, H0 C# _& W0 l4 D# B
MODULE_DESCRIPTION("Led platform driver");+ r& v8 l& L0 Q, V

$ W  b6 c+ y0 A4 L* F. eMODULE_AUTHOR("Tronlong");
) _9 W9 q( X' w) x8 Q, f
% o/ I/ n; Z7 w) F  TMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
' A* x8 x+ ^( j2 R; R6 _6 S

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
& K/ F3 R9 a! W+ q3 M您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。# K# I" D- |: ^! d/ z' H/ E
...
0 P) [& v- g' A/ o
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。) N: l! s3 S  l8 b6 Z7 f
http://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, 2024-5-3 19:24 , Processed in 0.044517 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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