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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑
  C( ?) N  P2 `2 T) s/ @( r: Z. Z( U/ K2 Y
请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的. Y. y" q+ g: J, n0 H

+ f: I/ U! Z; J; [4 v  P之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?! |3 L2 C' E. Q3 z3 ~0 C8 s7 @
! _7 A2 y: w+ M8 w

本帖子中包含更多资源

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

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:144 L4 ]& A* t2 l
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

7 Q1 _, F. T8 R2 G! b" N我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:) R  `! Y; i# @3 [
#include <linux/module.h>1 F$ E( o  Q! ^& N( {
. x8 H! p7 X* _5 U; ^; a/ Y
#include <linux/kernel.h>
, k0 j/ R' A0 }, w; W
( v( p" y* j, x#include <linux/types.h>
. b6 ?, p/ S8 n$ ~; A6 h! e2 |; w8 T) b; h7 U% X
#include <linux/gpio.h>0 ?0 [" y4 z7 n( k% V: _% I

; Y- C9 Y" o, _; b" j* @6 d' B#include <linux/leds.h>
" F: C4 i5 H5 Q- L: s
; O% D, w  l+ ^. M( L7 Q; C5 _#include <linux/platform_device.h>
+ V$ \7 Y( E1 Q, R2 D6 R0 S: V# Z) F/ ?  w

# m' A+ U. J1 s; g3 c% n
* d* e4 K7 _( n/ z0 e0 w#include <asm/mach-types.h>. l, |( C2 @' K+ S, y9 ~/ b) m
* j) [/ u9 z1 R- l; I
#include <asm/mach/arch.h>5 s9 P, [7 o; a$ b
: R! t4 P( a4 p+ E
#include <mach/da8xx.h>2 J3 s0 {; Y9 ^( k) w0 m4 ~
9 d# K8 |6 c- M
#include <mach/mux.h>
- j+ p% h  `: H# Z! @
6 j: B% T! b/ b* m& S# R* m5 x
' V" `' _! ^. s# O- ^! @  H2 v8 c- Y5 J' k. n: @* |3 X8 e
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
) i- Q; q4 F1 g$ [- Q7 ~
" i( t' y4 b1 ~- [# d' d! x; B+ J+ n#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)9 e+ N+ B  {0 w2 c2 |5 z1 y

: \, @; z; }  J3 @$ H/ a#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)- I5 a" D1 \7 x; j
# H9 O4 C; d5 J3 G. b* ]* L
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)$ @' a9 y8 s' G0 \" w+ y* s9 C# ^
2 g0 s& b2 V: l( k
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)! T+ l& J0 P. \. P
6 Z# f$ b3 V4 B5 ?$ F. R) W
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)! }; o) w* l2 b; r3 @) r, A) m" b
0 {' u8 h2 L0 x' R! Y

, p2 s1 v0 ]# E9 u5 `# h* u+ G! u# K+ w' [+ ?
/* assign the tl som board LED-GPIOs*// C0 L/ s. M3 l6 J+ a# S# T

' X' N' R4 w& k2 \static const short da850_evm_tl_user_led_pins[] = {
3 Y+ I5 ^0 C3 f& B: w) }9 ^8 h: G* q  _! X  u8 A& {- ~  O' M! l+ X
        /* These pins are definition at <mach/mux.h> file */
) Y3 m' f% x2 K2 ]3 n+ d- Y0 p9 w: k% Y4 K$ G( e4 |$ J8 w7 r, u
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,1 s. G$ r! L3 E8 v3 d

. J0 o1 e. P" g* ^        -1- q1 O3 ?  _5 `0 z  `% H! {
' A$ g* l& A3 L) U; U, q
};8 M: U. }! P" h! y3 `: e; q  P
4 P) I" Y+ Y, f+ S0 V- _" l
4 U4 c* G. ], A4 q5 Q

5 r, @3 F. q& D9 D4 ystatic struct gpio_led da850_evm_tl_leds[] = {
% W$ ^( Q1 \9 E: _) c. g1 H8 b; ]& T3 M' j, y1 x; t
        {
+ P0 `. D! p/ ]" ^0 F+ J. b# ~+ z; v$ h2 V8 i
                .active_low = 0,0 }5 i9 }$ j; q6 D6 ^
: N& G4 ?+ t4 ]" L' ^8 e7 \4 c
                .gpio = DA850_USER_LED0,! Q! ]5 i: T9 C9 R
# X# i3 ~; ]2 O0 }$ }4 K+ A
                .name = "user_led0",9 D) Y$ r$ J2 A! J- X

* O8 z  |1 [7 e, [6 n2 i# P: m                .default_trigger = "default-on",
3 Z( e! |& w& d; T9 H8 n
3 Y9 k' [8 P/ N6 H7 Q        },7 i- t3 h5 n; h' e9 z

. o$ a3 }4 M( i- ]        {
* @6 F0 c" x6 N$ B& F; d4 a7 X  ]
                .active_low = 0,
- S( i: t6 t& e8 m- W3 @' e, H! x5 c1 p0 K2 a! l6 D. ~/ f
                .gpio = DA850_USER_LED1,7 Q% z9 l% I" N5 _6 i  F# ^
& |% Z# L6 Q4 Z9 q* y5 ^
                .name = "user_led1"," `9 t4 l/ o( w

1 X; \( E; M5 C                .default_trigger = "default-on",
4 O. A( @  K$ Q
6 L$ g- g0 p4 X% W- d6 T1 W# D        },
/ j6 ~1 M. m, A6 v" n! Q9 j# s1 R. ^0 X8 C# \
        {
- r1 `% v; @9 Q7 x* c# V5 V0 _# Y
" c, P0 A8 O& ]7 V4 N. b6 T2 Y                .active_low = 0,% z! E- s- E) I/ X8 A

6 E4 G! i  v- v# C4 D2 A9 p+ o                .gpio = DA850_USER_LED2,
  j: G; V1 h5 ^- ~# L9 i5 x' A+ E, ^9 Q+ _$ S  W/ f
                .name = "user_led2",/ q7 \+ B- t, N$ [' J

" m0 ^  d: w: f1 G                .default_trigger = "default-on",
" `4 |1 W1 Y* y( k* }0 }, u" g8 e; M
: j) N6 l# ?5 A) e        },3 a! j$ }5 `( s/ a% Y- U5 O

* b. S4 D7 f4 a- K& Q        {. _* e1 A' X4 {( Z+ i. c

! {/ F9 j1 ~) [; E& j) @                .active_low = 0,( \  G% v( U; O# D; A/ c7 F5 a5 {

1 l* S# q+ C+ H* `0 g8 v0 n5 C) w                .gpio = DA850_USER_LED3,
% f; V# u8 p3 H) |2 H2 O1 H. e
2 [5 q2 v. i! r6 d                .name = "user_led3",
, t' K, d  h1 k  k4 N% L: V7 d3 o
7 p5 |8 I/ L' R2 d0 \' S) g$ Q+ i+ {                .default_trigger = "default-on",5 Y8 b; m7 d0 a# b

' {! n$ S$ f/ z8 N. |, L        },% m( T! s( r& a  V4 \+ u: z) u

0 @: w( W0 n8 q6 ^, z2 @+ Y        {
" Z- G! L: V4 y
7 j& \! f& A: d+ e  T                .active_low = 0,- _; B7 z, C, k1 u/ o6 ]
+ E" |- k! d- ]6 ^' C8 c# z" j- g5 J
                .gpio = DA850_USER_LED4,/ N: ~% N# \3 q, W- x
. ?  b( m* R: D$ v, L" U6 w5 L
                .name = "user_led4",
% Y: y- s: e& o! x* S4 c1 K) |# N. R. u
                .default_trigger = "default-on",
; s0 P% \3 T1 u" v( a& R( V7 K* _; M% o( y# d! j! R
        },% ]' l) C5 o* |% l
5 b5 T- Y. ]: U
        {
! @5 U2 Q) h% p
& e. p" _" Y3 N8 Y5 M+ T                .active_low = 0,, Y9 C4 f- [" a; S9 l+ a

4 @' U( o+ K$ O! Z- W. D                .gpio = DA850_USER_LED5,! z( ~$ |& \$ A+ U8 R( u' o

% q: v/ Y" L6 a5 q4 l. j2 m" y: Z/ j                .name = "user_led5",; }4 V5 Q: p. J. V( U' K' i# ~

6 x& u! k7 C0 B$ B                .default_trigger = "default-on",5 Q( V' }3 X4 m

- P# j6 F. _( G' f        },8 d4 b& c8 C# B& Y* q4 v4 H# G

" a: q" N6 y! j% R# p5 h  z};* x! K3 o# Z6 n
' V, p1 b1 p5 f( a
2 f: j4 F+ J) J% f/ o* K3 @% ]$ c

& O8 G0 I" I+ d: sstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {: z# I& r! }- z! d5 `6 l3 H) o* s

- Q7 Q* ^) Y" Q+ a/ j) S+ g* R        .leds = da850_evm_tl_leds,
9 Q& }  x9 r0 M) m( o+ ~- c9 N
  Y' a9 f: Z# u! ?% `: M. q) Y5 n, U. _        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
9 A5 h  f5 J3 Z( w9 v0 [' K2 ~$ d3 n6 a* r
};
- A; U, i7 F$ T1 ~% c
! P: F6 H$ _$ y$ Y# D" g+ _% ~- I* e5 I/ R1 S1 f# g4 U4 X& f. A

9 A. D/ X; l8 N8 ^' \static void led_dev_release(struct device *dev)$ E; U7 H, F, N+ N9 `4 Y, s: z

+ I+ B7 J2 d' F: N3 I, V* p{
( M7 e& D$ [$ b; r# _" |7 C  P) c/ \6 c; c4 C: C0 g
};6 Q) B  z# Q5 N1 v/ A. [1 Y

! j& Z# u' Q4 U( ~
  }, X0 F0 i9 e( b! g0 ?( `- y) B6 j6 f
static struct platform_device da850_evm_tl_leds_device = {
& e% p4 L* v: }- }9 T) Y9 k! ?! ~0 |& K3 c  ~- k! @0 `2 I
        .name                = "leds-gpio",
- M0 g% ^' ?# ?* Y9 R5 F8 F, J- Q6 w0 L% L) G
        .id                = 1,0 l2 j3 E1 c5 ~$ {
4 O# v3 R$ X7 ~) ?% V
        .dev = {- N! h3 B+ |' J, N% f- T) s
, w) Q6 [, e, s6 R' V' W2 K& F6 T0 W
                .platform_data = &da850_evm_tl_leds_pdata,6 d3 K$ F! d& n5 Q. ]
) j( t3 u3 l# }& \: [
                .release = led_dev_release,
9 w3 a# V' ]# q$ V# d1 S* l7 X$ L9 I) d1 X
        }/ B5 U8 j( |; U. i/ C+ d
! y1 ~2 m& j: p6 }  n7 k
};- F7 d: g8 d% G" J

+ R, ^, H" P* d& j, c
- `/ z, |: o: g/ V+ a# v7 F* D
8 q1 e' M$ W) x# f4 Zstatic int __init led_platform_init(void)% P( N- A  k' Q9 Y
6 {) m; \; h) Z) F! |
{4 b  z7 J; ]  g  Y2 m

' b# f: V- t0 O        int ret;  Y' O4 k* {0 k  c/ D& y5 d3 U: [

# `2 G' r2 w7 l  _5 }! d* w( w  b#if 0
  H$ |9 V1 {, b" J# A) m6 p- \
! {' ^+ s/ V$ H9 b" Y        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);9 [2 A( L+ U3 P2 [2 ^, e" N9 \
1 j& t  H& Y0 G- J  c! E( a9 I- r- d
        if (ret)( d# n" a# V' H$ k% H( n0 n
# O2 n, e) x/ r7 ^4 G7 q$ e
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
' k! U# `. E) Y9 E" O8 J5 s
! b& v  f/ n' `# K+ \                                "%d\n", ret);2 X# @' z( O# S/ y

' `6 \7 q! z- C. b2 S0 \/ _4 ~#endif1 m; W4 ~/ U" P3 q: \. L0 x( K
. j. T0 {8 `! ^# k
        ret = platform_device_register(&da850_evm_tl_leds_device);( D& I; [2 e5 W8 e& P
1 U; h& J- g% I+ j/ t7 ?
        if (ret). o! a% @3 u5 O7 z+ H- Y
0 T" b4 H0 R$ D. o
                pr_warning("Could not register som GPIO expander LEDS");
! Z7 B7 e5 M9 O) D- t5 w! A& h
4 @$ [8 P8 _3 ]3 X8 n2 G0 |" ?        else
8 N' S* `, A: T% B1 e# c* K  a/ x1 ?, }2 r; s0 m* B% h& O
                printk(KERN_INFO "LED register sucessful!\n");
. X$ @) m. r! n0 u5 H$ l
2 Z% Q) j+ s5 B$ Z( _5 y8 N
" ~; }% F" e4 g4 ]( P: w! E, `/ D3 f& S% A- I7 i! b( ?6 |
        return ret;. F3 a" t' I& l$ P

% P2 b5 s/ L7 w( r}% {: N: o! Y  Q. h: C5 A5 i

0 w6 b4 @3 \6 L. d1 c+ ^; _) R
) y. g% K, P; N4 v- b" _3 W: Q3 C0 d, H8 b; n0 f; J9 }9 E8 _0 Q
static void __exit led_platform_exit(void)" y. V4 F- u4 q9 ~- M* ^2 ]5 ]0 h  o
# V, o" n- S. T/ E1 y2 g
{0 \7 V' E: N: c3 W6 K5 o0 A
( w+ f; \: e& F' u
        platform_device_unregister(&da850_evm_tl_leds_device);' I. W+ \0 I! q5 j% C$ P
+ l' i, i: c! q, d- M3 F3 I
/ M7 `+ Y  f2 g8 I; n% T6 M4 W4 k
3 Z7 p% k6 L4 O) K% a
        printk(KERN_INFO "LED unregister!\n");, C) L# U4 `- m( N5 F$ }! d: X; X
* _7 ?/ g& q* a; g7 R+ y6 y
}& ]6 c  o( ^% o# x+ Z; e0 S
+ X1 q7 V  f$ A; i, T' r

0 H( [+ v% g$ v8 A* Z3 p# S* A* b# k( k6 Z, u) m/ t2 b: N
module_init(led_platform_init);1 i5 p( Y1 k! e7 a' y$ x" u
+ Z6 w$ h3 e9 R0 K* k
module_exit(led_platform_exit);1 {8 s5 d! k9 _6 R+ A

& c4 Z8 R& R' ?/ q( z6 R( b! G
) l1 j* Y# {( h) a7 P. R
+ e4 q5 ?, a' `5 u+ YMODULE_DESCRIPTION("Led platform driver");, J' s4 o; E: @9 Y2 J( H% O0 v, \/ H

- U& O! Q- B/ K3 u+ ]2 DMODULE_AUTHOR("Tronlong");
2 N5 Y+ T1 `6 T0 R3 d7 f( _9 U
& T% p8 Y+ C( @& |$ eMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。. y/ U( D0 j4 u; b) C  \8 F

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:321 m# c1 y/ n( R
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。' G  E4 N& g) }
...
$ |, `( ^8 t: e; ~
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。3 ~+ c" p& J6 E. @8 ~
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-5 22:50 , Processed in 0.045172 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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