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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑
) B+ `2 f, F' j; I" z. Y. S0 ~3 x! |9 z+ Q. Y
请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的  X1 t; Q+ e& w. j% ~3 g

9 l( F) S% q; d, ~, y& S& J之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?- B7 S) x& q9 P$ ?9 H( V' g" y, F
8 A  @9 @, _1 L8 O4 \& x

本帖子中包含更多资源

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

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" B1 K3 n9 K' ~$ [! d
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

  t5 t( a2 x) e1 o1 m我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
# U! b4 A, ~  Z#include <linux/module.h>
* q( u. g& B7 I' {, H1 ]
3 K7 S4 c' y1 m2 d+ d: |#include <linux/kernel.h>
0 R6 Q. s3 Y9 p8 p& |" B( B2 H! {
% y, b- Z; W+ D( T/ |6 p3 B! L#include <linux/types.h>
: g! g+ X8 P- L; {. l- t# z; X; \
#include <linux/gpio.h>
4 q1 v/ N- \5 H3 v  @) w& [5 o2 E  Q( i
#include <linux/leds.h>; X0 g! C7 e5 s

: ^/ Z0 \5 P/ K6 R: x9 n: V5 M#include <linux/platform_device.h>
/ O+ I0 F# S5 j. c8 |# G' J* Y+ q4 D+ K" R7 m) ~' u7 u+ _5 z

0 A: K% s0 P& N; L6 z# B) I5 H# ]! r8 f  M) A
#include <asm/mach-types.h>) e" y3 s# F( L1 {

& p. l0 t( x% k# v  M; y: ^: H#include <asm/mach/arch.h>
/ j! u1 x6 G# A; _& }+ h1 P: f! \) W. m: \+ g6 z; K# I  }
#include <mach/da8xx.h>% w+ d8 m" P8 k! a6 |

1 s% n; l% }; m9 N#include <mach/mux.h>2 I) \8 a( G* r3 f
2 D. S+ {9 m" g+ W+ i' l) j

( J) _+ |+ M7 X" v5 m, `+ b# q& |- \+ e
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0), F' d$ M2 ^& x; k- v* v, I& g
7 C6 A. D& e  r5 M
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
  Z0 K5 M1 p5 Z. y0 r
0 J1 ?8 k- K$ T5 e& o5 ^#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
( Q2 H. N9 j$ N- e+ ]. ~
# e% b# }" ?9 k, K7 \3 B+ F#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
4 ~& s# `5 }; b9 z" I6 [6 c( \- L  |* }, a. ?2 b, _5 H  S
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)( R4 m6 J3 V6 ]- f$ o
& S# {3 f  A0 H8 i
#define DA850_USER_LED5 GPIO_TO_PIN(6,13), g5 {+ b; F4 C* m6 n
5 h/ u3 \0 v6 j( G2 s

) l6 L6 x8 F1 e4 ]4 i! m% r/ W8 w  i/ V
/* assign the tl som board LED-GPIOs*/
6 @' L% a  M+ Q: s6 G9 ^. w
7 A5 J. [" \8 L* N+ Y$ Mstatic const short da850_evm_tl_user_led_pins[] = {/ v1 w2 ^7 F/ U0 S+ r/ J0 N, D
+ P' ?- v9 Q3 j- g6 z
        /* These pins are definition at <mach/mux.h> file */
' n; T' D* q5 L" v
/ p' O" L& k5 r) s1 W5 g        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
$ l9 d  g& N- ~- S" B6 ~' l. C3 N, s' }
        -16 t: X) Q1 s% N8 J8 {

# N1 H. X' j% p0 C, b};
1 w: p  H7 ~7 F# h6 L) n% t$ t- f
* S% K# X; s! V9 y# M
2 L' Q% ~, {3 B. |7 k  [  f& Y3 S* n- J- Q8 r
static struct gpio_led da850_evm_tl_leds[] = {  }- j  b8 D1 ~4 g: }! _, L

$ n: |! N: P% h) R/ z! g( a8 \        {
' e6 P6 W$ k7 I( Z0 D* R- |
* s# L; x1 Y) g6 Z                .active_low = 0,1 c6 p+ B3 w. x& K/ s% T

# E3 r! \6 N; Q' B' C: V                .gpio = DA850_USER_LED0,3 C4 p+ D0 f! w( ?" K' w9 w  M9 m! A
" A; B. W( r; n& z
                .name = "user_led0",
5 X7 _7 Y! x, p% \0 Q
4 h4 ?( O3 i* X3 L                .default_trigger = "default-on",& N3 u3 J+ [4 V/ v# r% A" g( ~2 K8 z7 y

+ X7 n& C9 F* n2 [1 b        },
% @/ D; ~$ _4 t7 R* @! _
9 V8 g% f; X$ o- J% g+ o5 x        {
6 T0 L: m  f! @! m, N: n6 X) R; o! H6 l7 t
                .active_low = 0,* ]" g# H( }/ t* N% e+ }

- _) }7 U* i' `) J                .gpio = DA850_USER_LED1,
5 A( |3 D; G* W: m# O- q1 ]7 ]5 }5 [% R8 v# l7 B
                .name = "user_led1",7 R! r6 R# Z2 s
5 J! R7 [. l* C
                .default_trigger = "default-on",+ X) q$ J6 M) ]) I8 |; b

& f( w( a: Q+ w; ]  m        },
0 C$ Q; d0 x: {, J: Z- k" T3 P
        {
5 s/ v# [  R! |2 F2 V# K( _& |5 b- j1 W9 _7 f& K
                .active_low = 0,
& K4 }/ T0 ]$ K" ~1 E" V7 O$ T1 O% V( q: h
                .gpio = DA850_USER_LED2,
" z7 P) p2 u- f4 X
' ^  ~) H/ w& P( D% A3 D2 x                .name = "user_led2",, ]3 w5 u) y6 s; W5 C6 s% C

/ C1 d. }; @3 x: A% c. o! m; o                .default_trigger = "default-on",' i: C# i! C2 R* T0 I, C( g

' Q  ~1 y7 v- d/ T$ h, a' p1 ~; a        },
, s9 W4 b! r( Q  b: J6 }0 ^. e) [9 l* U' V" \/ n
        {
, f6 I/ m* l+ J% M$ g% Y* F$ Z; `' N; Z0 ]3 n4 f7 \7 d
                .active_low = 0,
6 r! z4 s+ B" g8 @5 T( s
8 g- V+ z1 A* x" z1 {                .gpio = DA850_USER_LED3,7 k7 d4 u. Y' w( f3 K

0 N8 }: m: Y7 j- T                .name = "user_led3",' T* J6 {/ s8 V
6 C, a3 q# a; R8 ^' `8 I$ S
                .default_trigger = "default-on",
  n7 i& j: e# p# z2 W: e" Y; `  e; m' G9 N. {! r  x
        },0 D( l+ R$ B8 K; S- n  D+ M3 t

% p. [7 `! r- E. z        {
% \# M/ n9 Y8 E
8 L5 s0 e. L7 X' p% a* R& }0 t                .active_low = 0,
9 B% g% e8 {0 F4 l9 ]# D
# O! {6 F1 Z* c                .gpio = DA850_USER_LED4,& [! N3 ^* a. g) j) w0 E9 O" Y/ d
+ D6 L& I7 ~3 ~! v3 e
                .name = "user_led4",
9 E2 K; ]# B1 a6 C1 J/ L* i' A0 A# Y5 C* H2 `* O
                .default_trigger = "default-on",
" W- e% Q  u$ ?3 Z, ~
$ B5 Y1 V/ {0 b2 H& v- r; ~        },' I& u* v0 z2 q/ N& z+ }
( N) q- w' v) E: G# q6 u  z
        {# M+ ]' R" S. M+ c; n

/ ^) x) ^* @- ^5 F2 Z5 l                .active_low = 0,
7 m9 O1 m8 M) `
& \+ J9 f3 S7 v% j                .gpio = DA850_USER_LED5,
# p. C9 K& O" w0 A& R* G. t8 v2 e! K, A( z' W
                .name = "user_led5",0 `0 i  `4 |+ ?8 V; |, S

) K) J0 {) b+ n8 a                .default_trigger = "default-on",3 f* Z5 [; k* s" B+ P
9 j8 P. Q3 {1 p' d* q! X- l
        },
' `3 t! j, k( c: f/ ]4 P$ _) N. J9 s6 D/ L" R2 F: V
};! ~. _; E9 T4 M$ h- L9 |6 n

. s& v* B+ M$ a6 S# G' |# I6 Q. G. E4 H! ^- Z' M; q8 }# A8 F. b

& V' L! H  f$ tstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
# O' Q0 d  w$ o9 m* O% d4 N2 M3 v- q1 Z) e1 S0 i. B/ Q3 P
        .leds = da850_evm_tl_leds,
+ \! Q3 E" S1 Z# V8 {' b. W* ~5 f1 _( Z% m8 D! Q( v
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
# ?. X1 I* R+ |' Z. O8 T- }2 Y3 }8 W% C& c3 h+ H9 A. R) |: F
};9 S& o7 w9 s4 o
; {" N4 T+ F* @# c5 ~

, U: b) E5 m0 n* F! A6 A; |$ ]4 o" w! c! Z; {6 G: {* |
static void led_dev_release(struct device *dev)- \& w3 e  i) P+ M4 L: x, D' w3 M, L# {" D
2 Z2 J+ Y* Z1 m/ D# o
{) G5 {) y* V7 Q. G; z

4 I( }$ [, V$ ~: o/ ^- K! F};9 R8 s& q! T4 j$ f% g
  D2 s  v- s- b- ?) f4 z; t9 c
2 y% ?. x- i" \$ |% g
9 b5 e9 i3 Q7 F. n8 a. F/ i2 |
static struct platform_device da850_evm_tl_leds_device = {
& p' p5 m, v- N& S1 d$ w2 b
" f2 a( n$ \, m7 v8 e0 T        .name                = "leds-gpio",8 G7 O" [" ?* C8 Y% Y
: F+ \5 T: W; Q1 T: ^
        .id                = 1,
& w$ U. ]+ K( r# k& b8 h
& ~8 ^5 C6 z- n9 v        .dev = {! O  S& l* H3 J

. H' V9 X1 R3 L                .platform_data = &da850_evm_tl_leds_pdata,
& t7 v9 N/ R; v. l
3 Y! _) Y( \7 K: `+ x. E9 ^                .release = led_dev_release,6 V* D5 _( r" C% R$ t" l

: Y, ~- [2 @. h* @5 Q        }2 ~2 k  C, b) s/ U

2 d! P) ]/ G& K+ e6 J};) \+ |% Z: V7 @( S/ o) m. |5 E! x" P

% N3 y7 [* L! {- `" ~8 b
( F$ e  l" a( \3 d1 O
  G* H: Y8 M8 y: `8 ?4 bstatic int __init led_platform_init(void), O5 y. j! m( ?" I, K
' Y% G. n$ n$ P( M/ S
{
3 H7 r) u6 I6 y+ |# z
# k# h) X. G) h) d        int ret;
7 {2 I: q, e0 l
) F+ n0 O; [3 X$ O/ D6 E+ T' O. T#if 02 j- |2 ~- k, _, K$ R$ a* P* O
1 ~+ w3 L( O: G7 s
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
" A( S( a8 Y1 [" B: X; J1 D; H! u( A3 u9 c8 K0 W* w& s4 \
        if (ret). x+ B6 i2 w4 I* J- d+ z4 K3 P# t
4 {- z- H# P- j5 |4 X
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
$ T* r) c' E% F$ V
" R3 u; u& L# S0 ?                                "%d\n", ret);$ e7 |+ D8 S  X/ M5 S& J+ F

! b2 V3 S- H8 ?7 E8 r#endif4 b  y9 h9 O+ U$ c/ u6 N, E

1 o  `: f2 g/ n- Y5 g1 E2 u        ret = platform_device_register(&da850_evm_tl_leds_device);! j2 Y1 Y% O# k7 h# _7 ?: Q5 k1 s6 l0 {
6 K' Q; @. f0 V" o& [2 @
        if (ret)/ W  K* p) Z  e1 J9 M6 ?' `* }+ W# l

0 e- `. y( F% D* [4 W$ }                pr_warning("Could not register som GPIO expander LEDS");
" _4 o* J2 d9 z( i8 I' l- B
8 @" }+ g; }% r  S9 l: I. s        else, |: N/ J3 C' P0 J, C5 z
8 `% [6 u1 R) y9 `# m# F, r) x
                printk(KERN_INFO "LED register sucessful!\n");
0 y! i$ v2 e3 ~2 ]: V* q) s9 d2 ]" |/ h& m8 Q2 P. `4 q

7 @! h# C7 {3 k" ]& Y
# ^3 n/ W0 B) b# l' M( T        return ret;
8 f+ z, ?- I2 Y, _. W0 J4 [9 ?# q5 s4 N, Z( t2 i" u2 [- V: }8 g8 G
}
, B! z7 Y6 j; n8 ?
! T2 j, K, J* W" A- w, Z# f! J
/ r- U2 ^7 F" u. A* Q+ Q1 m  y( l* |0 x0 ^: y& Y
static void __exit led_platform_exit(void)
: ^* j$ P8 E) n' E8 t
" Z: _6 T- q% m1 E{
+ u/ \3 O3 y, L  ~- r3 `  H
2 E& ?: S3 l8 c# ?8 q) ^1 j, M        platform_device_unregister(&da850_evm_tl_leds_device);! V, c& `: Y2 J; C$ t; f

( t' C6 h, X' q# T! r
/ V3 K3 j0 B6 X6 `' g6 {# ^5 {4 E, i: Q* `1 M8 C
        printk(KERN_INFO "LED unregister!\n");
& b% h: g' b3 J2 Y9 U, Z
1 N  P  B' {( Z' k}
4 f: Y% b/ ^+ {4 i
1 V) X" t/ @$ k' D" n% U
4 C) l' V- b. t: N3 V6 A
7 i2 Y$ }1 N( p$ s% bmodule_init(led_platform_init);  s- L% U5 R+ m7 s5 p7 f0 ^
: ^3 I# V" z) Z* j; s& s
module_exit(led_platform_exit);
. l8 n  Z$ _/ G7 k2 s; Y; ]% c( C( [- ^
# G+ i1 _& n- W
# V- R6 `" u# K
MODULE_DESCRIPTION("Led platform driver");+ p% a1 ^% }+ r: c8 o5 P! F2 s

! U& q  W" x1 |- o0 H2 ]% ^MODULE_AUTHOR("Tronlong");
  k7 w; W( l# M9 K4 A8 Z; g6 d
. \# M8 N9 [9 A) O0 w7 KMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
/ c! `. e$ H( o; `

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
1 K8 A: T# P6 [  }' i2 v2 g2 i) p您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。' {/ R( m' f, i2 l. B% e  W
...
! q) v# A4 Q$ h) J4 ?1 D
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
: Z+ S- v; [5 t2 Uhttp://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-9 04:30 , Processed in 0.041856 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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