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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 ! @3 S  w1 O  K/ }
6 ]1 i( n8 G3 p4 g$ H8 `! {; g/ t; ]
请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的
- g5 w4 r( }8 o3 }  p8 q" @0 d- H/ m& v5 b
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?
. ]& V# }$ `9 s
4 S) W  T/ m1 b: n5 }' `

本帖子中包含更多资源

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

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:145 e( f0 I  `  H+ c- X. Q; n
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

" m, I/ O  k3 ]3 W6 [, R' q我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
4 E5 e/ T$ o1 p( o4 B, f8 _#include <linux/module.h>  ~0 b% j+ r! M

" u" S1 v5 X; {#include <linux/kernel.h>% P: K. |2 A* u9 i: @& |
) j6 ?- `- Q7 i
#include <linux/types.h>' \' D# z2 z) c

: [# i& ~+ t1 P6 z% z- p) I#include <linux/gpio.h>* a$ \2 l/ z) H3 g

7 Y$ B  P" P. b#include <linux/leds.h>
& H" [' }  ]+ O. w& U  u( @9 G5 U0 j, I2 M1 |4 R$ A) {4 s8 Q
#include <linux/platform_device.h>% Z1 A! K( Z' a0 P5 R
* y6 f7 S  p; l) p0 t& d4 M
  J& m* z) R9 a) R) A
; w7 G) a8 X7 a8 v7 Q  F$ m) Z/ M
#include <asm/mach-types.h># r2 N/ y$ s5 Z. F3 Q1 h

! N. q" L! q' I8 o#include <asm/mach/arch.h>: u. L; Q5 D+ V1 M

  l5 t1 o7 u* X) W- a) T& @' q#include <mach/da8xx.h>
' B7 q  g7 d, G, P  J& Z+ Q0 h1 d& ]) t8 b; s) F( w
#include <mach/mux.h>  T* e0 J  I  r: b6 d
' l8 c$ F- J( K. s/ o

7 |" E: c( C/ Y- E$ ?3 ]) C2 A1 r9 N+ q+ s5 i, p$ V% r" G0 z
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
8 z7 Y8 C4 F  [5 N9 o
( F& R7 l# V. m+ h# r9 D" e! R#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)# ~( X2 l9 W/ Y3 t1 ]
9 N; N) v+ \# x$ O; w
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)8 F/ l' o- [: Y) Y6 C3 t

3 U9 M# B' M7 W3 \. c#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
) m; u1 N# f) B/ ]7 ~- A+ Q& d4 R, b3 y5 ?2 F( |8 r& V
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)
# e" S) p5 q* t' ~9 ?- G- j5 f* E/ s3 X/ P
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)9 `9 w: Y$ J3 u- q$ A. j" M

( T/ [* e& I7 D! b5 ^7 G4 l5 y6 v/ L& k% R
5 r$ X4 u. T7 ^* a# @
/* assign the tl som board LED-GPIOs*/# n. @: m: C' k
! q0 F# W. Y2 Y& L, Q' O" I7 w
static const short da850_evm_tl_user_led_pins[] = {
* z8 M  [1 M) K: g$ B( w1 D; O8 ?
! {7 m: _0 l# I# J2 G        /* These pins are definition at <mach/mux.h> file */8 ?" N7 R. {5 o$ h: {

5 g5 j5 b0 z0 L6 d- ]0 p/ O        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
9 t) b9 h8 @3 A, V' X5 }( \+ P4 G7 l- {3 L/ A
        -1$ x# P( Q3 b( J/ d

6 k5 c* `" r& M};
. u! r) ]9 N# H* }7 |  M! R" g9 v4 X% w" v* }

  i1 c! v! b$ O( k, t/ m. ]( y  b& E; r  E
static struct gpio_led da850_evm_tl_leds[] = {
. r0 v$ P9 j/ B  B/ n1 {2 p6 G6 o$ ~
) `) Z5 [# `) U5 U3 S8 D8 H" j, d1 a6 [        {
9 ?. G! N; h9 q9 |* V2 H
2 e; i, W; o& F1 {, @1 D- c                .active_low = 0,
  p# `" e1 O$ W2 }- i: e, H! u" V5 W- H- R/ ~/ T
                .gpio = DA850_USER_LED0,
# v, s$ n, j' \4 W1 |* K
* u5 }) Z: H/ e/ Z) r+ n# `, ^                .name = "user_led0",3 P: F2 R0 ]" |3 R. l! h

8 C( ~3 j0 _* o0 ~7 v                .default_trigger = "default-on",) T1 O6 {: f8 l" R% _; J) g
% G! _9 I4 q- F% Y
        },
  @! ^/ _2 G  ]) a2 N% I7 `
8 ~8 I3 _- t4 _1 [+ P        {) \& B  B8 V$ P  v) p4 Z& Y* L  C

4 J0 ~' G7 I" E6 x& a/ ^                .active_low = 0,
0 m: C8 P) I' E- b- A: J3 v
7 T. W4 T9 @* i9 m. l. i4 z                .gpio = DA850_USER_LED1,
6 \5 h4 U$ g% ~  `3 ^% w# r5 |2 h, m( F& B. d9 ]
                .name = "user_led1",
( I# F- O  G" w9 D; b0 Y* V& M) z0 T8 Z  `) ]
                .default_trigger = "default-on",, n4 [' e: S: N5 U  o" r
4 W- q" _4 t$ G7 I8 \# w/ _
        },' Z% {( @$ f9 Y# X9 p) Y9 H% J
8 E0 }6 w7 N% M3 j: H
        {/ X! o( i4 f3 q( i
" C7 P; d  j. @6 h7 s
                .active_low = 0,
/ s; S9 G+ ^- X# k
7 w/ a: @+ k; q+ t4 @; F9 d                .gpio = DA850_USER_LED2,
) T/ W9 h2 I6 O1 b! V6 Y, E& O; t- I0 V
                .name = "user_led2"," Y- w1 }) y' W3 o! _0 i
* k( y5 y0 C. B
                .default_trigger = "default-on",
: V! |" Q$ g, c, J  y& Z: m* P
. P2 I' {  L3 g4 m1 O        },9 z6 W1 Z" c6 Z: x9 d

# k" l- D( j6 C- Y        {
) x6 g' t5 L$ s; N- f8 |5 L3 X  F' B5 A* g, y/ q
                .active_low = 0,
/ J* d+ T& y6 m  \+ f8 o8 e6 K! A: \( X
                .gpio = DA850_USER_LED3,
. K5 D6 g7 d: a1 E' g- L* h
- P% M, |  p# _4 X4 h/ {( A; z                .name = "user_led3",
8 W  a2 M% l% i' K3 E
5 T; S* r5 ]2 X8 W                .default_trigger = "default-on",+ [% D( k3 |( A! |) l: y1 h% p! z

0 Y0 N; d+ b( k" m' c* K& h! p5 q6 W        },( [1 s1 C5 B) P! N
$ K4 X& o- m% I4 K3 f) ]
        {! ?6 w4 ^. w* C( Z) J: {1 e
$ g) ~) F8 U; x5 g" L7 H' [, p( q
                .active_low = 0,
9 V5 l, E9 A0 U( @* z8 Z, \: B4 j: e) J/ Y% Q
                .gpio = DA850_USER_LED4,
8 K$ \6 m; t$ ]9 _6 _# `9 e- {
2 f( s" u# V1 z2 ~- O2 C2 T                .name = "user_led4",
" j/ p4 |: k, N1 N) g' ~0 K* F1 d2 Y5 o$ w
                .default_trigger = "default-on",* \% Z4 t4 u( b$ _* w- {6 P

. r5 S. z6 y! {0 ^. f3 p1 K        },
4 S( ~- l# Q( ?5 |* @( _
$ A& m) j$ {( G- T, w        {
/ n& r1 E  l# a+ F6 q7 F
/ d& h9 T; Y. {; S! A# N                .active_low = 0,
+ H8 u" J. M: m, \" }
2 Z! ^( d. e" U1 A                .gpio = DA850_USER_LED5,
$ E0 T7 x8 J& u  T6 w3 M
! ]( H' b+ T% a3 F2 K7 S                .name = "user_led5",% v+ G& B: P& U, i/ v) O6 W' y
8 s8 i" b; V( n+ O
                .default_trigger = "default-on",
: m3 s$ @  \9 L  c( u% {* D3 l
8 I0 H; `, m6 z& I+ F" v  L0 o        },
% e( c& O9 b- j* }# l9 G/ ^$ M2 e$ c! K; r2 d
};4 a" O4 k# L! \+ ~( p0 M5 P  Z& z- c  O

/ |! {, R/ U8 c* c7 C" c
  e9 m' v" j& T" }6 i- b7 `- Q  C- k% j1 s# C4 h+ T3 V
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {4 x8 g1 h" E- I  U3 ~* r" {1 G/ I2 g3 |# K

% N9 s* }, L9 z" k# q6 n$ w# _4 _        .leds = da850_evm_tl_leds,
# E& J& }9 R, B( c5 y6 D
& ~/ B+ L& Q! u7 l$ x8 o        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),* M2 @: @& ~% k. {6 G
! r/ b8 E8 F, p* I/ \
};3 s- D9 [, E& C, M9 h$ G
: H% m7 k. t! [; t; w
, [, S, |8 n& {, c; q8 A1 I

0 P! E% p; p/ k. [) R3 N* m" vstatic void led_dev_release(struct device *dev)
4 F/ e/ O8 [: |8 |" X0 J
4 ]: k+ G& z0 _% R/ P- g0 ]{3 g7 |# i% d1 ^! Q4 D' k
6 k& F; J  s( L( F3 ?
};
# e7 A: |- F5 J" c/ P# Y3 `0 v% D' G, w3 G' f

$ k) a7 x6 H0 H( ~$ K5 @. k8 Y0 i3 w7 F
static struct platform_device da850_evm_tl_leds_device = {# i' ~5 ]: K7 O) u5 c8 K: r+ z2 ], O

; ?$ f" w- B6 @2 w' G        .name                = "leds-gpio",
- G+ J- O" G! H8 r2 }% d$ q! Q
6 I( C* y* ]7 W2 e; K: E4 I7 t        .id                = 1,5 |  Y% B: p# B: N2 ~' n
- i0 M3 v3 U! X. B" t
        .dev = {
; M( a& F* R; g/ G4 P/ t, r
' Z0 r1 R4 b! K# V* v                .platform_data = &da850_evm_tl_leds_pdata,
3 d! w  u2 O9 x
% e5 }$ \9 l2 Y- j  `                .release = led_dev_release,
! N5 i& n% d9 X+ s0 k/ l( K) y7 W
        }' t0 i( y7 _- V+ X+ n3 A$ ?

6 V. \. g7 M7 F+ d- z* ]. s$ s};
# w" M0 W0 z& P7 g% l, n% @
6 }1 Q  c; x1 b1 |1 r
9 ]8 X& g) n" J. ?+ r) L9 R/ w3 X
% c& L% h% s" z, P" F) ostatic int __init led_platform_init(void)2 L5 v5 x. p8 z) D0 ~' O
4 ^1 Y" v6 }) e5 O9 z5 _) F
{
' P1 H2 c2 f- |4 w3 l. W
5 h% V* Y8 ^( b5 X6 k- ~        int ret;
% l( A# U( `1 m' V; ^* n6 j, X
- v9 O0 h$ h  p" X) S( }& q. R#if 0; f6 i2 x) _5 B
  l, D) `+ l: ~; Y) j
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);3 {8 k1 p5 F/ Q' U* y
1 H& B3 `; r. u& R; p* L; H1 Z
        if (ret)
! j$ t4 y# ]# M# a' y9 I9 o9 ?. B) @% S/ y# k2 a- i6 W0 ~
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
8 v! O% }3 y8 C; u) y5 p& _% q& o/ V) X1 w/ }* m! i$ F- c
                                "%d\n", ret);
% N) x4 G. _) Q3 E, x- D! a, H$ ]( z& ~! Y) i9 T6 W$ P" J
#endif
# B& \8 _. e5 j7 V5 A. C8 ^& R  y1 ~7 g6 G& u. {' l: x8 r
        ret = platform_device_register(&da850_evm_tl_leds_device);
. w9 Z5 ]5 X6 q- t& b" X# b. V
  J6 f; L9 q1 J" Q/ {  a" k$ H) j9 a        if (ret)
; f5 F* d4 J$ q% b4 {3 M: p
; ]) N8 n  Z, M+ A% a                pr_warning("Could not register som GPIO expander LEDS");
$ J" t' y4 o* `; i6 R( H' C+ j3 T  M9 z! d' _
        else
) g! z- G4 W7 \  D6 X- _% l9 c4 A
7 W. R% R+ B3 j8 I* ^                printk(KERN_INFO "LED register sucessful!\n");+ g  ~+ B5 ~; t8 U; G$ K
( b" Z( ?) X/ i6 K
$ ~5 Y9 ]- d* [7 }3 ]9 N& u
  W+ |5 P1 a! W
        return ret;! Q5 r" h8 }7 f* P! \* H) Q

5 J( p1 u) E2 q+ d}7 X( t, V! o# S" O; C$ ]
% X1 {. n& Y: W6 }' }

0 ~" A9 ^0 R- f( L1 A/ g: h
0 h: [$ S' z  B& I. W+ \8 k! O6 jstatic void __exit led_platform_exit(void)
8 K- H, `* U; F2 }9 ^
1 }* D* q& i9 t: c3 P# q( i$ g{% P) ?/ h* _4 |# K8 [

. }! X; O4 J) Q+ r; k! I2 y, H        platform_device_unregister(&da850_evm_tl_leds_device);
( j& e0 E. J) d% I9 J  R% X
$ b( j3 W4 Y3 C& W) K; W( q4 v& u9 P# ~* v3 Z6 s) Y

) ?' h2 w5 |, ]        printk(KERN_INFO "LED unregister!\n");
3 i6 e7 S1 i: _) P' B3 i0 O8 z  S" Y
4 z- q7 F/ j0 S5 J. k( ?- _}- o2 D) @; p: G3 D9 k3 N, [- H
% k* Y5 u, K+ ^0 X2 s  t  X
; X, D/ F/ c7 Y# A& L! e# Q
9 s0 s. `8 A6 J6 N& e
module_init(led_platform_init);
% R( t: U& j- d. d% q* a4 V6 e7 J0 P" l' e# H
module_exit(led_platform_exit);- e. M. p; ~) a7 G: l  \; {* \9 Y
( S" q: J5 s* l0 z' P  g) }7 D. [

# S5 {. d- z9 e; f  `" f& I
' B8 v' U* C* o1 C2 VMODULE_DESCRIPTION("Led platform driver");
; G+ b/ U! s) I' s! P9 m
' N  Z+ ~) c: o9 u- A! ]( _MODULE_AUTHOR("Tronlong");
% l# b4 K$ i' T% _+ x
# @, e( f& Z( B' L$ D) R9 M3 KMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
3 c3 n; c1 ~6 j8 I0 Y

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32! l% C- C9 ^& l* O- E, {
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。' c7 A3 `3 J; F; I% W. m
...
* D' S* `  v0 S- s+ S
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。, ?; l1 i' {) u# O
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 05:31 , Processed in 0.043541 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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