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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 # C# ]; ?5 T+ q# U$ L& s
* [  q+ ~3 U( u1 B$ V
请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的" u5 ^" R7 Y( D8 h9 p

0 e- k2 q( a! l& s3 h之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?0 y8 C6 ]7 T. B* X' v

& s5 u/ N" ]5 m2 L5 G2 a" O

本帖子中包含更多资源

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

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:14
0 M7 X6 R  i0 z/ @1 Zlinux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

( Q" R7 F7 v0 I- n4 A3 ~- Z我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
) K* s! [1 p/ ]  _#include <linux/module.h>2 Y" k0 M& g: x+ X  G0 @( o* Q* G

1 _0 L+ _& M" h% L; q#include <linux/kernel.h>
: V+ {4 }% u( ?/ y. `- e) I7 w
% |  @4 t% K! L, {$ n7 i. n9 _#include <linux/types.h>* W" n- D, _* A" \( A$ Q

" [% |; z5 ~+ w+ P% J: U#include <linux/gpio.h>6 I! O3 y, i4 Z! c. r- u8 _

3 l" n4 H; Q2 l- k! h- q- e( {#include <linux/leds.h>& G& v; c# I1 N, P- M0 r

) n5 G( v- x' t5 |- L- w( _#include <linux/platform_device.h>
  J  l1 M8 O" A' v  D; N
8 z# H6 p: D* a1 r
1 F) I5 j6 `% g0 X9 P
% Q$ k5 H" t$ Q#include <asm/mach-types.h>6 n  A- C2 A) b( s& u

# W. I$ |, n+ t( j' K#include <asm/mach/arch.h># H4 v& {7 l% C$ J

7 d7 @, g) _0 x5 Q8 A#include <mach/da8xx.h>7 l2 H& f7 H9 N6 `) V; n

1 v  D- q: Y2 @7 ^, X0 Z9 _#include <mach/mux.h>( Y6 X- Y, x# T+ p* e
2 r( n3 T# d' W# C" A! G) O

/ O/ H8 p: H! X# u1 X' h/ V& z2 L
1 ]: G; a+ C0 m2 @/ h. Y  i#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
3 h3 [3 g, D) L0 I0 _8 _8 \' z# \  z, B6 A# l% x/ q
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)# V$ \1 \& h7 @( N* D; U
/ Z' @, }" Q. H  r9 W  b5 h5 s4 P
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)( ^' N+ l6 ~5 w) l! r
% M! \+ S0 I) Q& G* A
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)5 \2 n8 q6 [- H! k, C. {: w$ E) g
& b0 N* I0 [% h8 U  u. _! N
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)* ^6 {4 O+ h; D+ Z3 s$ \% p
7 z/ z* Q% S, l4 T
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
! h) n2 ]7 c1 _8 f) n
' X6 h/ L/ G, W1 R+ j" A/ D- J8 y* b( G

5 Y- w3 s) Z6 {* T2 j8 D9 r/* assign the tl som board LED-GPIOs*/  A0 ^, @0 e1 d, Z" f
% g3 I% C  h/ _3 m! l" A
static const short da850_evm_tl_user_led_pins[] = {
* F8 e* x* ^6 Z$ m/ ~( w9 s; l- l/ v% T8 ~! h3 n
        /* These pins are definition at <mach/mux.h> file */
& n& ?2 |! E( q- _5 n# x+ [# h1 I$ Y8 D7 }/ {
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,4 N; {& J0 {8 D) W. S/ G
9 t: v8 q$ r( I! ]
        -16 J* [3 T& j& q8 F& Z# Q
% [: S; y3 n) ]; a2 C) M0 k
};& v/ f! t+ B, u: o% @  |

5 a; z2 K0 X' `! X6 b# P, p* ?1 v
$ w# _2 c2 ^& `1 m/ D& c' h! a5 k$ _, h
static struct gpio_led da850_evm_tl_leds[] = {
/ n; O* d. H+ ~- x6 J" N# r* n$ ~. x) v, @; a/ j8 x5 Z8 o
        {
8 X% i; D2 b8 d: U( {/ @
- \" z& `1 [! R6 U, A5 k$ t                .active_low = 0,6 b8 J- P: F/ ~* A$ V0 P! n
- f# s, D0 z& q" u, ^+ B1 A4 Y
                .gpio = DA850_USER_LED0,, G6 h6 N+ n. D8 N

$ @; Y) B" F  g3 S! q                .name = "user_led0",! a7 U- o% p4 r/ G7 o' g+ Y
0 f( B. ~1 e+ d! z
                .default_trigger = "default-on",) y' q! }1 W% z9 j
) z+ w9 e, M* c* H
        },% v, z- [( Y+ s- Q" O" ~
6 E  z+ H) h/ o) F/ V8 _& ]
        {4 N; l) k* I$ K6 |8 N4 p6 U; `) g) F
' Y6 v. F: H0 S/ u4 ~
                .active_low = 0,# ?! C. I7 Q2 Z
7 G( X9 j8 m) D
                .gpio = DA850_USER_LED1,
: Q* }$ s" q6 W& R1 B% w1 O. S% N; H( |$ V5 F
                .name = "user_led1",
9 Y' L- a2 R6 T! K
" F4 H# K/ R% A- D, ~* j9 H& m# O9 z                .default_trigger = "default-on",6 `8 @. n2 H' b. j6 P; _
. h0 y% o7 x% k$ }% J' i" }) z
        },7 X. m  v% U9 [! z

9 l/ r' D. G) h+ I( Z        {
' v: M7 P  ~9 n
' r! e% _( r: a' m# H* c                .active_low = 0,
: R; m0 V" I' W7 m7 Y
% E$ Z9 ]/ |& F- }                .gpio = DA850_USER_LED2,
/ P& C# c& m, F7 K8 ^8 X6 H
9 s; q8 c+ F2 \7 i9 p$ H( C                .name = "user_led2",/ u' l. g; X+ _* q8 H

& c4 S6 [& @& a/ `% F" l                .default_trigger = "default-on",6 H1 l4 c; |! C9 L# R3 X
; ?; J% m: r# ]* m0 r% V) |
        },% Q+ O( m6 O" P  r! h

5 ?! a; z) M* O% r( w) ~+ W        {
, k0 b$ x! T: l5 P( _) w) j0 ^9 s) V" k" Q; Z. y' f) |% h3 s, _
                .active_low = 0,
8 |% s2 o! v. x$ S% ?
+ v2 `) [7 o8 }2 s( J8 P                .gpio = DA850_USER_LED3,1 l, p/ o) i! {2 `
' t5 L6 O) H7 K! j- H, {
                .name = "user_led3",8 b4 W7 g! R) c; k. O

2 K* O% ~5 R# E$ t" ]; V/ O6 u9 t                .default_trigger = "default-on",; b( c. W, x2 {  J
9 N; R5 Y% V. \5 j6 G. c3 N# d
        },- o- \7 V- j6 j! V  @( ?3 |' n6 Q% L
: a3 Q( _* y* ]) b5 f
        {9 P8 A: N1 S  v  R$ k
8 E# S1 N5 ?5 Q7 z& \
                .active_low = 0,
" f# i: d9 J' d  D$ }! F  h; N; U' i) P8 p( T) J# M! a
                .gpio = DA850_USER_LED4,
6 E8 _" c# _# I1 s# l/ S& \/ m! N6 A$ @* N5 Q
                .name = "user_led4",
% v# D. `8 D1 l% h
3 H! i  _# z  Z4 m+ Z                .default_trigger = "default-on",
% \6 m& X  O( n6 B9 L" m; K9 _* @: L7 N& e6 O8 O
        },
( K" D( o! @& U
6 X% s% e: P7 g8 f' m3 ?  G        {
6 z& [: h8 I0 h% X& ^' g& z, O( _9 h. A' H
                .active_low = 0,
. Q4 H7 V" u4 ]$ J7 ?0 g7 o6 T
, _' s: @- U/ C& q                .gpio = DA850_USER_LED5,
0 X: s$ H7 K  U$ d6 S2 U1 _$ E% U0 ~/ N' w1 G) S$ R
                .name = "user_led5",
% B7 D5 @+ n. V* ]9 J
2 ?# M- E) d; a% I( P2 b                .default_trigger = "default-on",0 \! I  @4 j- F. s4 Q2 N

, x7 S- W: ~& q! n# v+ G        },
$ ~  }: \3 R" Z/ e! v- p9 Q4 T8 f; c- ~2 p0 C+ k5 k
};
1 a, i: v2 u3 g/ Z7 c( O/ C; F6 _4 H2 ~* W* o2 R2 o
. K+ p* v3 }% C# t
7 m( D  p! H7 ~+ P
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {# A) ?4 N4 M: r% x# j! Q' w% S

* B# K! Z. l; W: R) [( v        .leds = da850_evm_tl_leds,
6 \: E  Z* Y; `3 _8 i
: d# o' p" ], Z$ z4 h3 a, u        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),4 q( y8 ]5 [+ I
% A8 k* M1 K8 ?9 F! Y
};
+ q2 _/ M( J  X$ {7 t' P4 a; H! H1 l1 W+ ?; u
; P& m2 `5 |4 D- L

9 u6 a* l; h/ ~, W0 i) e& _5 _static void led_dev_release(struct device *dev)5 c* ]# H6 e2 K5 h4 t/ Z9 K1 G$ B$ f
$ l3 K/ c  v- k# b* k# M
{9 F# \7 p' k: Z, s$ f
; t! h2 |8 J; B4 O( u+ |5 T
};  K2 J; z' p5 l$ I+ a
; B9 F/ `$ d8 X$ i+ e

2 Z6 k& \7 V1 I6 e. K) R
' w8 |( @) w! E/ P: Z0 mstatic struct platform_device da850_evm_tl_leds_device = {9 H0 ^1 X: A: i

. }3 P' w) O1 W        .name                = "leds-gpio",
' g* D7 X0 ^! ]) w" `' C
7 h7 h: N, X- p! R& p  w' x8 v$ ^% P        .id                = 1,) y% ^& \& @6 ]5 B. I2 H' [

1 r7 ^6 p+ R- O. S, S! U        .dev = {
9 s# F6 m# Y% z
" R" \. {1 b- X, Y3 h2 B% O% p                .platform_data = &da850_evm_tl_leds_pdata,
7 a$ L/ p1 i6 A2 v$ E6 c7 j' D9 O9 N; K4 [
                .release = led_dev_release,& G# b7 L; W/ c, L5 V
# \: j0 {# v5 X
        }$ _% S* N" ?4 w8 h! A
& p; _: B4 h4 F
};, p8 d: o# b8 X, d4 K' z& }
$ a- A9 D: y) T9 S" l1 U4 E

$ P& D  }* }: M' |5 P! b/ w% C2 w* D
( J" C. I( d  p( V+ `& v; nstatic int __init led_platform_init(void)
( ~/ k; U6 l& C
, F. a7 D' V. m& B* y$ q{
. W/ y: _3 L& r) D' m9 e& b7 p
: N8 [9 q% Q+ X3 S. u  t        int ret;& f# f" x! q- `) ~

& {% m$ ?9 \- W7 z+ y#if 0! D+ O+ {) g: b. I! j6 E
! \. a5 a+ s3 }$ ?
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);+ g5 b' g  }! S1 }3 t
( Q- w: j5 E7 p) D5 N- s" z
        if (ret)
9 _7 }; y. j# d$ s- ?& H( @* }1 |
5 J, [8 ~. A! c  b                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
* {, Y% N+ `( Y1 |
3 z  O, S$ j; ]# G' v                                "%d\n", ret);
5 B$ ?( r% Y. Q; Q, C' R
4 i! D, q) [. R8 m( {#endif
0 \7 o. P3 B1 l, p7 B! y0 a
1 U; Q, B9 P" T4 ?9 U, @- {        ret = platform_device_register(&da850_evm_tl_leds_device);" V, t% c- Q0 I6 b; I! U

& M% L# e; r3 X- r# e. d2 ~        if (ret)2 {: Y( d% a& S1 v2 m
0 V+ D' u* P) ]4 Z- d/ ~0 p
                pr_warning("Could not register som GPIO expander LEDS");
& c; g2 j9 {( S0 k5 f5 _' j6 M
! X* \% |- M( d2 o+ |9 E" n. x0 |        else. l1 G7 h8 ]7 z+ c
, g2 q! q. p+ ]+ h2 [, I5 {
                printk(KERN_INFO "LED register sucessful!\n");* H; H" m3 E2 R% c, V- G9 x
& j3 _  x! _$ Q& `" ]4 l5 ?

, ?" E, T/ `. i3 X4 R) L) B- D% h% g
        return ret;# G* k# C. p' j2 w% I3 U, E

3 O  T( }. j& P+ I" s}. O: J4 e3 k5 G% m7 |- Z

! |! x, S( Q4 _: e5 k6 V
8 C. z. D  W& J# d
' C5 ^! ?$ N' D4 [& b9 d2 zstatic void __exit led_platform_exit(void)
+ T/ M5 x% X. ]. r
; X7 @0 v  ^; ?0 N3 d, k/ Z6 u{
" R* h7 Z5 L8 I7 ]6 M
/ t6 A" _5 D5 z2 S% A1 g        platform_device_unregister(&da850_evm_tl_leds_device);
6 q1 w" o8 _# M" R: O$ V: D+ d2 z! b) \1 i
! D+ t/ U: V4 M4 |7 F! c" Q) x
  E, E% x! n0 Z9 h1 b
        printk(KERN_INFO "LED unregister!\n");
2 H( C5 k4 _- q1 w
9 q5 h& J- I8 s2 y: y}
' ]2 _+ ^6 e/ v8 G
( N" B7 M6 T8 |2 p- J/ L+ l3 P& o
8 d4 V9 [4 B+ y/ @) W; f6 [* u8 `0 G3 _
module_init(led_platform_init);, @. n( @  _" \9 Y/ F7 `
4 L" g2 X; C% M) B5 T. j
module_exit(led_platform_exit);7 N9 ^7 C: r: O+ O5 h, m5 B: }

6 D6 I& n( E' R& n4 |+ M! l- |5 T. y& a8 `  t: G9 y
! Q5 y5 ~, O, l$ r7 @0 h
MODULE_DESCRIPTION("Led platform driver");, A' \( J0 J3 z: w, t. j+ W6 t3 c
9 q# n5 V7 m+ v; o4 J$ B! k9 i
MODULE_AUTHOR("Tronlong");
, T; k/ d" T. A( K- ~+ R/ @( x
% e9 ^% w- X# PMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。" I' w2 H9 f9 J$ ]5 z6 {6 y. b  K

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
* t2 A3 M+ F( q0 d, U您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
% F0 |. R# e" n& T2 j1 G( c ...
, r3 f4 t! q  H. h
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
7 ]! d" S8 z$ R! K" @5 v' Jhttp://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 01:46 , Processed in 0.044092 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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