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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 4 I* N  _- y3 L4 {+ F  x+ p

  I. P: ?# H% F/ w/ o' ?请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的2 G+ a! m: E3 u/ D/ [, O

+ d+ M2 N, h& v, k3 M: P# S: A" {之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?0 n7 \. N8 d) V; ^5 {4 e! k' |
2 O  [7 T- m4 f8 o8 H

本帖子中包含更多资源

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

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) d! @- i; c+ d7 c8 F
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

4 K# ?- r' ?( p. J我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:! Z0 S6 Z$ P( Z9 Z: F3 I5 |
#include <linux/module.h>
9 ]4 T1 Q0 b1 x5 M6 G; A
! ~5 `' M" u7 w2 C1 s#include <linux/kernel.h>
: \+ c, C' i# F* ?4 @$ _7 A6 X0 y, J, {# S1 N
#include <linux/types.h>
1 o, z: H& j8 w+ {
; B% q, \% G' }( M& _& X#include <linux/gpio.h>
  x  F0 k. Z1 m7 V7 A# |9 o$ [9 D
#include <linux/leds.h>
* E% z, J* |6 q0 L/ t' @$ D
* j0 _6 f2 }8 J  r% d#include <linux/platform_device.h>! ?6 h. z/ \1 X0 y1 j  ^

1 m4 h. \: F9 G# M5 o
3 y! s& c6 [/ E* H# n) v* h9 {2 J& x
#include <asm/mach-types.h>
8 p* W7 c# F" L* D  E! o& b
2 |. u0 m- P7 d7 ^6 w4 Q& R#include <asm/mach/arch.h>8 ^# A' B8 @. q# I. Y

4 r: F. c- Y# o/ G8 n% @9 E8 t#include <mach/da8xx.h>  q( i4 f9 c/ I7 v

$ y5 A7 j5 S# r$ [% W! f#include <mach/mux.h>
: h1 i! h+ Q! x& d) X! \; F8 U, T" U5 F9 p- m
& c, ~0 M! ~4 S0 M; W  |
/ m& g( k2 \/ v$ {8 H" ?9 x2 |/ t: z
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)' z0 r7 z: n/ H9 v# t- ^7 i; c1 `$ D

& Y* W$ @) [$ X4 w0 P#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)0 G3 G' N2 x& b

6 F; H+ K* M' i" Y5 T. o2 T: ]#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
$ k3 f7 F5 y: [  b* Y" k- T
' S- Y4 y* F" a#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)8 X# ~2 z" H% N0 _! ]3 g

3 K9 w4 p+ A4 t  O* W#define DA850_USER_LED4 GPIO_TO_PIN(6,12)
( I, E# M% M, W6 C( f- i
2 V# a; q- P- ?9 \0 f9 d$ c6 \; c#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
  a2 f. Q. G& C4 e  c9 s) U# c% W9 k* O$ [5 k5 x0 c& H6 a

/ [3 T, O9 i0 @; F! \* v
& T" V% |/ N7 F$ \' J) y" q) F/* assign the tl som board LED-GPIOs*/
2 l6 i" h- T  `+ U
0 V$ s0 y  L5 G# Fstatic const short da850_evm_tl_user_led_pins[] = {' e- h# [- _+ H) w( J/ b" J. l
, C4 e* d9 K! X5 q+ c& h
        /* These pins are definition at <mach/mux.h> file */
; k7 U; N$ l! U, Z) R" e
# B5 _( q: h2 v) Q2 X        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
; m2 A6 E' g; P( B8 y
" r. d( T. ^  R* ?1 B) y        -1# W3 B: A4 B; {4 Y$ D. R+ @, A* U

6 z6 S+ s% L! h9 X, J; [. k0 E3 y' U};
4 F* {% k( a( \( Q& a
2 {; C6 `' l& J# P" |& s1 ^, ^+ {3 R( F, w/ K0 Z
; P3 }. f0 c6 s  n; ~3 Y# M+ r
static struct gpio_led da850_evm_tl_leds[] = {
4 I6 m/ J2 H3 b( {; T& n! c& k8 W, W# u6 i
        {
/ t1 B7 x+ q! G' @- w# S& D
" x6 k( i1 `! s  s( h- l2 [                .active_low = 0,, G) F4 F( z; m  h8 k
) b2 K( C( E3 E+ E& u
                .gpio = DA850_USER_LED0,, w" q5 i; _: c8 e  ~2 M* i
* O/ D/ Q1 i$ u) F, G
                .name = "user_led0",
) u3 X! [- e) e0 w6 w3 _' J" d: L. n) x' b+ Q
                .default_trigger = "default-on",
5 f* T! t( E" K3 w; u
/ |+ e) y* g1 t  l6 j        },
7 ]8 G; W/ W% I6 G1 Y' n* g( V4 k* E1 l1 {1 c( u* n
        {
) q7 Q  q7 T8 I3 x0 P6 g% ]" o% x  c" d5 x2 j1 i- l2 w( ~, B
                .active_low = 0,6 x: v) D( D+ o! L

  Q' J8 _6 q) B5 [2 P( B/ E2 I- Y1 S                .gpio = DA850_USER_LED1,9 l) G& L2 Y$ K8 Y* {9 k+ J& ~9 j/ T" j
, s  ?7 T0 Y& u) ?  ?+ I' ^
                .name = "user_led1"," i, M! I# v" F7 i) N; ]0 \; j) p
# |% \7 ?% U( M5 W0 Q
                .default_trigger = "default-on",
( ?6 Z3 G6 s# z7 @
6 i5 ]+ y3 Q: T0 N3 y2 `% F) Q( N6 y. L        },
% N$ M6 b2 J0 k8 }  H4 ~* a5 o* F6 o( i8 E1 i; _$ T  g6 e, M
        {" F4 u9 C* G  y  a4 u7 j
! ?$ a) [; F) l; N. ?9 O
                .active_low = 0,$ d5 ~) ^* b, I5 Q: [
! |* H* N0 G& P% o$ H; ^" k
                .gpio = DA850_USER_LED2,
) ~% m% p2 j5 l- g. A) B: ^, c9 R8 M' a6 o
                .name = "user_led2",  Z- O+ Y* }& X( N! x! v: D1 Z

* u' ^6 K, b* Q0 e7 o                .default_trigger = "default-on",, v6 n8 [! A2 c+ ]9 ?

4 @2 H+ y+ o3 x3 F# [% w5 @        },
4 @" c+ t# A# Y/ ?* m
2 Y- f0 d% S, t+ ^. Z0 E        {
6 w( Q, E* c* N0 t( _0 ~' ?0 h6 _( F* y3 {: h, N
                .active_low = 0,  c. Q7 u* ~5 E1 }& V

9 ]6 x* J6 a: }' z! v                .gpio = DA850_USER_LED3,
! \6 k7 q. X( Z  G$ K5 a  u! K; |; U9 x1 ]$ i1 j: ?
                .name = "user_led3",4 c) x/ r# c* g# O4 y

, h& E8 z' q3 {$ O: v                .default_trigger = "default-on",
8 @) E- J2 m9 Y( F5 c! P/ T* K: O
        },. T5 |- D2 E  Z# ~2 G

3 A. ~2 a! [. [9 i* |        {
" h. V+ |5 Y8 P; n! q  V/ s( B2 G+ o2 e3 a& C1 y# t
                .active_low = 0,
' F3 q/ S/ Z0 Z9 H( e2 h
/ J. `6 F, J+ T. V                .gpio = DA850_USER_LED4,
  V& P$ [0 n, S7 d" Y5 x+ G" Z7 A0 }1 g9 ], P& X
                .name = "user_led4",/ k2 Z# d4 ?* d7 D. N/ N( O" _

  Z5 J1 M2 r9 Z+ |/ f/ n                .default_trigger = "default-on",: X4 d& z8 Q( t9 f

* |" F6 V$ S7 N/ V/ ^$ e, \- g1 J- C        },
; d$ N6 T4 A) y, E
& B& @- D" K: _* R+ x+ X; K* [$ X        {
' A  O8 \' Z$ E; o
" b1 U- f1 G8 ^8 _0 \                .active_low = 0,1 ?+ T. X& O3 }7 G) G8 e( I
# D* a# X% Z% P/ {8 s
                .gpio = DA850_USER_LED5,+ G+ J, P3 j$ A; z5 p$ O. R
) [- j" G* Z. x2 s; h, }% z
                .name = "user_led5",
- ?, G/ u/ Y+ ^6 h9 g6 s. b! q# [# B) l0 J  k) p
                .default_trigger = "default-on",
! }5 x0 X" l" N6 G6 ^8 d. E& @. }0 M4 c) Z! ]: a- `
        },- t% \) I5 C4 n# }
$ r' f3 ?; I. @- U; C* e7 [
};
; H9 X: b! I4 j" @. y+ B, L; n! m/ q
- @" @) c  _) {) Q) O6 Q# A8 k

. c- l* {) V' Y! {; _; Y4 nstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
* d6 x# H" A1 w% ]9 C* Q  ?: K8 @0 |( Y- \* n
        .leds = da850_evm_tl_leds,
7 q$ [8 h3 h! t: o1 n
2 Q2 h8 I6 K8 `        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),& r# ~( j7 }# l$ b

; k* J; `( o' |0 J0 ]};
: |. l, T+ _5 }# h) D) p8 g! ]2 c' y  x: \0 l5 d& g) ^. b

: L" X! o, t: T7 M0 k( I$ x7 _( I6 m! h, N* B$ A9 Q
static void led_dev_release(struct device *dev)
9 m3 T- ^$ C; E$ N* D$ j
6 Z' c3 z* Q1 m& O$ u  U! N# l9 d{
6 B7 X0 W* p' U9 F; B$ e3 ]
$ V7 H" W2 f: ]) \( q};
  x8 I$ e8 t  D3 g$ U; W
" z* M) R, t3 p. m5 S1 B# n+ c
1 r3 L& I1 E6 \& N8 F" q1 W) o' ^! \* S! g! s
static struct platform_device da850_evm_tl_leds_device = {' b- c; X/ h6 i5 ]" o
* Y' \- r! N$ m" f6 H
        .name                = "leds-gpio"," D7 ~9 h  N7 S6 ^

7 M" T- j0 g0 g        .id                = 1,
9 c- q$ U" y  m: o9 ?1 }
2 @+ e% V" O: n: y$ V        .dev = {9 h+ l9 R& B7 X( {
9 x9 N  g) ~( m
                .platform_data = &da850_evm_tl_leds_pdata,- M8 G" |% B/ w( `4 o! g

4 h0 h- v1 I: E                .release = led_dev_release,6 [: @/ C! e. R, b9 ?3 J6 i
- Z0 y6 W' L  o8 S6 U( d# }1 a
        }
; ^7 ]# o3 p! M7 F
! [- q: A4 x: W: O};+ ?% W9 n* ~7 |1 [) o  r: I' ^
3 }  ?) z# r+ l, }6 D& n

, _2 r" F( t7 T  Y7 b. g/ v' j' o( g  L" {$ J! Y
static int __init led_platform_init(void)
% ?- `, L$ n2 B& y/ ^/ [9 Q  w7 T7 E1 S1 a
3 b! J2 n1 ?4 g# ?{
+ t, B  H# x8 n# S5 n; h" D* B: W% l: q" G6 v" q0 J5 X% `
        int ret;6 t) Y8 {/ a  z. Y* @5 |( k
" w- a% Q; X1 @' Z- |
#if 0
, x1 \0 I5 _8 d" t9 h+ Y
/ w1 y) R/ x; w* M5 I        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
& B5 p5 S  U% k
) x! h6 g/ a$ z* j& M. k        if (ret)* w& V5 I( i2 \0 C: W" e
. E% P0 i) h0 X2 Q% U$ }
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"( s% w! ?2 Q* S; L

3 l: `6 N# i. B% w) p' Q" T                                "%d\n", ret);6 p+ I  z- D& |( f8 \
. r5 `0 w; S1 x6 f; `
#endif2 b- `' J: [+ l: H( G
1 c" }& P( K5 L4 R$ P
        ret = platform_device_register(&da850_evm_tl_leds_device);/ {3 ]  ], O5 c

# Q* r8 n7 P* I: m" m        if (ret)+ X3 [9 M7 G! A" U7 |
& N( S; k2 `/ u, J+ P5 V+ I* l
                pr_warning("Could not register som GPIO expander LEDS");
5 v9 N& G) e; a+ H2 g8 r, D+ G* u1 L+ H- k
        else
; N; n2 d1 H0 o
* Q' F5 j5 z& d3 s# I. k                printk(KERN_INFO "LED register sucessful!\n");0 |# z/ P* g3 ]8 d3 ?9 ?
' e/ A: [4 ^8 a' v! E5 j0 z) H

* I7 ~/ X* Y. c) f* u1 V' @& u$ Q
+ L2 _4 y2 d. A" T        return ret;: x( O  w1 n8 l( x: O: q! ~9 o
5 s0 H# C) S% R! g1 n1 i
}0 E* Q$ j! u1 J$ I% {1 d

1 N! Y9 r9 N5 H7 s
" Z5 t- T8 a5 j( f; Z0 o6 I( r- p: Y. z+ ~; L
static void __exit led_platform_exit(void)6 B4 {4 ?: \5 B: l3 {* i% }1 d
1 F$ l3 p: N; G) |% m# e: K2 ~
{
5 }' w7 l& L# u) ]; g  o
5 ]8 N% v) G: i8 I        platform_device_unregister(&da850_evm_tl_leds_device);7 {- l. m3 R# u) {2 N( L
, f1 L2 r" J1 o; V4 Y2 P% F

8 W0 ]' r/ l# n4 ?4 a0 `  n# U; X2 L; R& ~
        printk(KERN_INFO "LED unregister!\n");
+ {; q6 r, s6 O8 E  i6 i
+ Z$ l9 C8 v& j. G! V1 c# J9 G}
" T8 K# i0 s( j" ^: s+ D( O4 R8 P, U: y& C3 h* D7 R8 _  P5 G' ?' Q

; t2 Y9 E! Z/ N" m) M5 K( {0 C, T; h/ y+ F/ ^1 D$ U  S
module_init(led_platform_init);
9 ~8 u! _! F9 Y$ N
0 {# t7 z9 S5 V( rmodule_exit(led_platform_exit);  C5 P7 c' `+ _
0 g8 X% R/ e* z* K
) J9 _! O/ Z1 n# k
+ i4 J% g  Z; v% t
MODULE_DESCRIPTION("Led platform driver");5 z3 f1 C  j( T6 F  L  b' u, ?
8 ]' V" T+ b- p. X4 ]
MODULE_AUTHOR("Tronlong");0 }( t1 a% J& H6 M
( j: t0 O) u! s# |: z4 T
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。* j5 |* H! f( D) p/ ]4 m

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
+ U! c9 N, k3 l' ^/ g您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。5 Z8 O. u: Y( D/ O) y0 Q" U2 d" m3 n
...
* M4 w; [: }% Q
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
$ C# e9 W( v& F; F1 Lhttp://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-12-14 12:09 , Processed in 0.057696 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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