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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 - y' P; _/ G% x3 |* F
# J" w" D1 B' y) Y: W2 ]) y
请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的
2 b) }3 d) j1 p# j: c) _
) c$ s# P4 V/ ^7 B之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?
9 A) p5 q0 J- v! O, ^% a: p6 m) U

本帖子中包含更多资源

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

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  P3 V5 {: m, E' m* o& L
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

6 H: P1 v2 a; S; V, B我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:) X5 T( ~# G! q- o
#include <linux/module.h>
3 j- S& L/ }& v% i% S! x9 `/ _7 y
+ i, @6 N; b8 C#include <linux/kernel.h>" A7 B: h. U$ Y( ^! M" X
* t5 ~) y1 p. O0 C# ]
#include <linux/types.h>
( Y4 x- d+ y- E) D  y, y* Z; |' I
0 t- h3 I- k. j. W# Z3 u8 r#include <linux/gpio.h>
: V: j" ^3 ^" Z) O
. L/ r$ @) X- [8 v9 [#include <linux/leds.h>. F& ]- }; a9 U3 D! M# A
* w, f- f& V& X4 W
#include <linux/platform_device.h>- S: C8 K5 O! h" F0 Q0 `' a
5 G7 ^3 e7 r, H5 x3 o$ H7 E
3 ?! H1 O/ C% w
+ X# e4 a" o% d* X6 O
#include <asm/mach-types.h>/ ?; w& J+ [  ~5 R. N  P* Z( S
, u$ y) h' p+ f- O  u+ V
#include <asm/mach/arch.h>" f2 A0 O6 ^& Z$ }: h* x# h
$ S6 q# f2 y  J1 z* T* o
#include <mach/da8xx.h># B! q* V) v, y& A+ ^* ^/ `
# ]3 g0 M( \* s; y0 v
#include <mach/mux.h>
5 C4 L( H5 _. F  n2 L- L% _% X2 D" V8 @, K
) Y$ ^8 R; e! h2 r, W1 H

' s' b/ G7 _! `#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
* ]. i7 C# I% p5 j" E: l6 `: Q0 |/ \# Y. d
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
2 n6 H3 F( ]0 Q' U. y! x  d
* k* C  |' p0 ^#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)8 v2 r) X) E, {& ^
" P/ x% S$ H5 H, y
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
; z) x/ N  H9 S- s
2 B& t5 n% O% a8 z% U#define DA850_USER_LED4 GPIO_TO_PIN(6,12)
+ P+ I1 f( X& e/ o* x
6 [2 P/ s* {: W2 c& t+ O#define DA850_USER_LED5 GPIO_TO_PIN(6,13)- n3 V& f$ @2 T0 v  e! g( e

6 i. m5 ~" P7 U4 q- B# W. J
+ _, e7 s8 c- R3 y1 ^5 _! x8 Y6 s
  N$ X0 M: }3 \# k$ y' M/* assign the tl som board LED-GPIOs*/
6 B/ k- z) ?* q' E& f
/ k( |6 Q! Q7 P# V  U6 x' zstatic const short da850_evm_tl_user_led_pins[] = {
, P1 f3 e  S0 ~* b  d9 }
3 [7 @9 u4 }6 N1 O: a        /* These pins are definition at <mach/mux.h> file */* l7 i, g+ k& t, W; B6 ?+ g

! m' V8 B$ _/ h9 M$ r        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,# M+ {2 G# e; R
4 [% [( g, @+ M, f1 {
        -13 N2 |  K2 y7 R4 }: G' C0 ]
8 q# I9 ~6 ]/ G, c$ h* U: s
};
4 T, H- P% Q2 s9 o0 x
* Y0 y, W# V5 q% t) q
8 m. f. G! Z3 O+ I4 R& C" @  A: s' y$ q  Y6 \
static struct gpio_led da850_evm_tl_leds[] = {5 F1 K7 O% N; V
* X0 A) w8 R% V+ k3 d: L
        {1 r7 L) U' \) x8 B4 U4 t

' k: A" p( U) R: B$ Q. H+ i3 U                .active_low = 0,
9 N0 |, S' M/ `& Q: D9 ]: j3 H! W/ D/ M% u+ ]" ~+ N2 s1 h% v2 z, F, p
                .gpio = DA850_USER_LED0,  Q3 y& Y  Y' P4 d

$ O9 I4 {9 v, d- o2 g: k                .name = "user_led0",: s' z7 K- G# J/ U  j: j

5 A) J6 E5 l2 J; `                .default_trigger = "default-on",3 L5 N! N3 u( G, c

1 }% R( `4 s  I3 E5 M0 [0 d        },2 w; B/ W0 t6 O; B% f
6 o2 v4 T2 |7 f) B1 B8 L
        {
4 u& I& z& `& {; {( z4 D$ Y% s0 \  q
+ I/ N4 f$ f8 o0 f' f; ^  }$ ]0 c                .active_low = 0,
" p3 ~3 d3 L# |$ ~3 B; \( ]6 V9 s" G2 I8 X1 L
                .gpio = DA850_USER_LED1,
2 H- T4 v) w9 B6 l  B8 m
4 H2 I9 T: j0 i, W0 }/ r                .name = "user_led1",
' ?" M; ^1 s8 ]0 Q  s8 Y1 p) L1 E( t' S4 _! b1 W% B7 c/ N- U" Y/ p, b
                .default_trigger = "default-on",
8 j6 i* O* f9 g! z$ Q0 C3 O! H: |( s- G
        },
5 {  K8 d( N7 ~. C3 r5 c. ]# Y9 `  r4 [0 q3 a* Y7 q; c
        {* ]1 [1 H0 ?" O

4 o* {8 W1 e: N                .active_low = 0," f1 ?: K) l$ W8 u: l

; J/ I7 ?" R) ?, w1 `' D8 T                .gpio = DA850_USER_LED2,0 n/ e  R+ Y6 g6 z; a: q, J
% {% g; X- u! `
                .name = "user_led2",
0 ~* D/ o$ V$ ], Z" d9 t& z7 i+ ]' }- U, j2 h! C  M
                .default_trigger = "default-on",
) d6 f2 Y! Q6 I: i# V
! R! r1 Z1 h; }9 Q        },
  U! N, W9 \6 n5 X6 W* ~5 x) ^/ b: p* I  s' a  K$ B
        {+ Y* R' W& v7 h( Z; ]2 [
, w* @2 Y0 l. i# V& G9 z
                .active_low = 0,
5 N+ u: h( X0 _) ?3 V! R- k. w3 L6 @+ B
                .gpio = DA850_USER_LED3,& S5 W3 D' m: \

3 H: U( \! e+ o                .name = "user_led3",
$ D2 x# a0 d) G, B% Q, L! G  I1 S) }' [
                .default_trigger = "default-on",
: m5 p: W' m9 _5 [
% E- N0 i# Y" F        },  q  {/ a  c; h% S/ K2 h

" t% D" Z5 a* D& {1 x  }        {
% e$ ~  P% D6 b4 M: Z) _$ ^/ g! Y  D$ P. W
                .active_low = 0,
6 D; t* E- M+ ^0 r. t
8 b0 l6 |, N) B                .gpio = DA850_USER_LED4,
3 w% A: F( b/ e) r8 b; x# b/ L7 Z% N
                .name = "user_led4",6 p  x" x3 y! \0 g. P8 I
* g) W7 M. o: z- S. g
                .default_trigger = "default-on",
7 ^1 r( {8 ^% \2 n. N3 N- s3 G- s- o. u" f; {
        },* Q4 ]) X. ^. f! d
8 O% c# U4 U- z. m- o6 C1 F
        {
6 t# F) {9 _4 c% P: ]( h3 b; b, I2 C
: ^, p2 a6 b3 ^# f# U* b. V                .active_low = 0,2 f; J, R3 a, m9 ^+ Y

( j% O9 m; B- {) H$ C% a2 a1 E# m                .gpio = DA850_USER_LED5,
9 F6 ^; I- l1 H! J( w/ C& O5 R1 ], _+ Y  K$ g% ~
                .name = "user_led5",) ?; ?! t% T) g! {& j4 v: e' f

4 k) e& }. r% |6 m  x. q: B                .default_trigger = "default-on",  G2 m- ]$ M$ d1 {0 l
9 ]! ~! n6 t* \
        },4 o7 H) E8 w, M! J

' M' _1 \' T8 F: T) {2 W};
+ f2 a/ H9 j0 B" ?9 P, g; J6 i# j) w* p. g6 c6 x

/ e- u* r$ L; k% ]* n% u* w" a5 u1 ~6 C$ T# Y+ F2 l
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
) l( A0 ]8 P; D4 k. G( P
+ j" h3 V) |* X. b. {        .leds = da850_evm_tl_leds,
6 e8 |& H% s$ M5 o! q2 }
2 A  U" S" W' Y, X4 \        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),$ W* [' ?$ _4 l) H
7 [) A. b8 V! @/ V/ s0 g, c& d8 E
};
9 |9 M+ [0 L' F9 [' M/ U9 F
: Q$ V6 p$ T2 Z* l# J- m" ^
. q7 v7 G! l3 U+ @
6 h( x* q% x2 S: p& @0 Ustatic void led_dev_release(struct device *dev)
  c- w+ ^) N; W  H  |+ A
* [3 q# H7 _- s6 t{
$ R& d% j( `1 \- k8 |) r, e2 S, D1 \" T
};
: p* r, J4 V3 s& Z( e9 h) U) p4 n" k9 b) P# A9 \% N' T8 J" M
. i& R3 A$ c  i) ~+ t% m
. ?7 d: N* `' a1 t
static struct platform_device da850_evm_tl_leds_device = {
6 s! `' f1 \0 ]# I7 Q& W. ~6 z3 x3 e$ k& v# g9 @; n4 }
        .name                = "leds-gpio",
$ ?. |" J. C# ]* ~* `  ^- |* r$ m7 s; e+ {( V2 @8 _7 v4 R, B* G
        .id                = 1,6 ?/ L( \& H) u! X! V; T  ]6 p! B
% \. u" A2 K) [8 M; a6 X) q* T& w5 \
        .dev = {
% s2 u: ^: v* V4 w3 Z' _3 g6 w. ]8 w/ P/ z5 D0 W; w; u
                .platform_data = &da850_evm_tl_leds_pdata,/ L( S" m5 y# o1 E: [, W

& E) Z% S6 p; |2 B4 k+ e                .release = led_dev_release,
# _9 T; @4 F( I/ s: i
! R8 Z* t+ E& B6 D        }' @4 b- T3 }6 w' P) {2 S
  \; q: L5 t8 i. w$ N7 f1 Q
};
& `8 a" G) x3 \' n2 P# @! y- p' {) B! ~. `3 C4 M2 o, n7 \
+ h$ ~7 Y, d  G. r1 y

4 W, k& [0 _& W: `static int __init led_platform_init(void)3 p% }1 q* t/ E; H! k. I

* o: J% P8 m9 k5 d9 F{
, J0 V+ s3 ~! m- F6 ]
- t  q$ J/ l& R( T& q: B1 {8 F4 f        int ret;0 e4 q/ y! Y; x, f* k9 E
% q% S* i+ C3 k/ F
#if 05 X( O) R6 q" z1 \- C. m8 }; x+ s

7 \. j1 o, j# U$ A" S0 c0 p$ I        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
2 f" c4 n( C; S9 l( M+ Z9 k! R: e/ H& b4 h4 ]
        if (ret)
" t1 Q3 d( W. l2 \# l
4 x$ R5 ?) C, Q4 |9 Y0 v: k0 p                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
- n& a% Z. k8 _0 c6 {, q$ t8 Q# H# G
                                "%d\n", ret);
5 h! g, I) m% q: q# |  P1 O
# v' {: s9 y1 i; ~  ?* @6 ~#endif
/ {. n/ W; ~! K2 A5 @3 y: _+ B; X, n" m1 [  A2 m) B$ t
        ret = platform_device_register(&da850_evm_tl_leds_device);
2 b/ s6 Z6 h9 `9 R% y! O$ g6 `
; K6 r; t- C1 o9 b        if (ret)( b# p$ ~" k, L/ t
8 T8 c0 s  x" v, C. U  y
                pr_warning("Could not register som GPIO expander LEDS");* @( h9 N& K  H% ]
3 Z$ E& N8 ?, i* F$ d/ p7 ~, O
        else
% X4 b8 Y- K( _
/ |! A; |/ s- ?* _. T  i1 Q                printk(KERN_INFO "LED register sucessful!\n");
) ?/ I: I2 Q; V! c' x  Q3 d# W$ _$ ~* t' c- u* R
! z- \$ R1 u6 D" Q0 e
9 w& ^3 C1 y3 V' [) _, N$ o( N' o4 z
        return ret;2 D& K2 _) T- T" m

  Z( }' h' [5 Q}7 f9 @5 }# P6 n1 ^

6 ]( ^+ Z3 |) v% ]; {" Z# G
. b2 ?( ~9 o4 p! Y4 B
- P6 X* ]' y: q- j$ N% p; rstatic void __exit led_platform_exit(void)  a2 N% `% n# U% Z* Z4 d( Q' _
4 D) `5 o4 {  K
{
# W% {6 g. X# a& |; {
" _+ `7 v/ G* }- x. ]3 N) l& z/ u' Y' V  y        platform_device_unregister(&da850_evm_tl_leds_device);* m! U  v; l& Z7 W' ?

9 v4 s- g! e% N) A3 u3 l0 f6 k3 T- o& d$ }5 [( n  E( _! \

, w- h5 e& j: R7 l# d4 N% u2 }        printk(KERN_INFO "LED unregister!\n");
. Z: ^5 Y( U0 H$ c; O; _2 V5 g) Y( r0 _- F5 o4 \- b, w! C
}
; W" p( F" Q1 V; V- u0 g/ l0 ^7 Z. U* R8 U

3 C9 L8 i6 z" q& I7 w) [0 @+ \4 S% {/ F' O% N3 w% `
module_init(led_platform_init);
- \* A) ?3 ]' j9 @, ?' l9 e) Y7 `; s$ {. G
module_exit(led_platform_exit);
+ f. ?1 w- {9 W* ]$ x
! m$ q' @) C. Z+ Y* j) l
" G* r1 S$ m* s) c
* T  T' {4 M0 K4 g/ DMODULE_DESCRIPTION("Led platform driver");
) ]6 F* \; [. B5 m$ R7 R
/ N" s  m: w+ E6 q: l% OMODULE_AUTHOR("Tronlong");
8 i7 |% [2 d' W
8 ~6 Z& i% U' E2 aMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。6 z7 D7 ?* Q, g, r, `* c

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32  i% l" T! Q3 c( r6 m
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
% R6 t! ?# f; r! a% t& ~. w ...

( J& F' o. p3 }! I好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。& ?( k  N8 ^. {4 N4 {# {
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, 2025-10-17 08:39 , Processed in 0.045038 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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