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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑
- j& b9 Z  `# H! O
' G! C' C- H; T% Q3 N# z/ Y请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的7 l5 X. O* l* u

" `& n7 V" L! ?. W之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?6 u0 i+ D5 s8 o1 z" L1 z1 o
& c6 C) m2 S! U

本帖子中包含更多资源

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

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% c% _7 a: H( X
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
. g0 w& E5 K) f- G# u' k
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
# W" w/ ], u/ I  F1 `( x#include <linux/module.h>
0 V$ u+ Q) f, M% e
0 N- M0 _; x$ H; v9 ?#include <linux/kernel.h>1 }: n' H' K9 Q0 c

7 ^0 l0 \" H% P' A  C#include <linux/types.h>
4 d. r. j  c; X4 q2 B3 T4 _- o+ U! W' ^/ P* m  s1 y$ ]! Q! f
#include <linux/gpio.h>
3 \7 U5 r* S5 J4 c+ C1 g  H7 X: @" ?7 @$ e- u; b% S/ L
#include <linux/leds.h>6 v9 U# {% {$ e% r3 j% E" D' ?

( w* o" G/ h" K#include <linux/platform_device.h>
5 d1 m2 ]& u- e7 A8 q0 N. U) t( ]6 h
) E  Y+ y: u# v* d2 I  f
4 G" f: H% B) l& v  S/ O- u" \: D1 x* N: ^) o# d
#include <asm/mach-types.h>
$ x1 \+ I/ ~! f9 }' z/ e: d% V7 E0 T$ M  v8 J0 u) Z2 G
#include <asm/mach/arch.h>6 z. S7 ~# |1 i! R2 {
  Y; [, O2 Q9 ^# h% l: O. s
#include <mach/da8xx.h>
9 {2 R- l, c+ o$ o4 F% o8 ]
0 J  i& E0 C( J% s4 T+ r#include <mach/mux.h>! r; _" ~' s4 i. E8 R1 p0 f5 M
. J( M- R: Y1 X& D# R
6 t2 j. Q' l4 H5 [# q3 s, w. Z/ B! z

1 G) X5 e3 s) ~0 H3 l, c#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
' ?, D3 M3 R+ o9 W9 G( z
% x7 V9 R: l; r) `. @- d: x#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
0 h7 Q5 t. e; T* y0 u
6 v! j/ s7 S8 {/ l#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
* Q5 I9 i% J0 S3 Y* @
  a6 O1 _3 }: S6 b#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)+ _0 {; Q% Y! Z- c: _, m9 b

8 j& R' N* v8 L0 R, X#define DA850_USER_LED4 GPIO_TO_PIN(6,12)' b4 K! }2 i5 w) c6 y5 |- m

7 Q0 F* i2 t  ?) k7 j#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
3 w- X! o8 N* A; Z$ ]# W
  j! Q; W* R7 G( Z+ U* b5 X& ~1 u( `+ ~: A- V  o. y7 m* L
3 I- u$ r; `( `7 d6 d
/* assign the tl som board LED-GPIOs*/
7 L7 \  ]0 c1 ]7 K2 u- a6 \
) w3 |8 m% H' N. S8 S' g: Rstatic const short da850_evm_tl_user_led_pins[] = {
5 c  C3 s7 I) F! L( e$ D
# j; b3 G# I. A( K& @        /* These pins are definition at <mach/mux.h> file */8 d2 B! ]: s) h% N
0 M, l/ [! l; P
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
/ p% S6 e! g- ^8 y5 j! S
( P+ K& ~  _: p! W+ I        -13 G; N) Q! D) s4 X/ Z$ O
1 {6 ~' {; O$ x7 _( f
};" t+ r, B/ F1 j  [, j! r6 z
/ C, O' J& k, M* i: d" @
: [* D/ }. C6 k( U+ ]! h1 I* F. z

6 N  G! D( c; ^$ E6 I1 Z) _static struct gpio_led da850_evm_tl_leds[] = {: t0 W5 h) B- k! k: p$ Y6 s( a* ^
# y$ T9 u( [7 o6 Q6 q) K8 Y
        {0 v( n: c- Y. I" P% k4 R# ?, p9 L

  g2 V" {( f; a                .active_low = 0,+ W: B/ [: ~0 y$ I. F/ j

+ K7 E0 g9 v! U, o# l5 t                .gpio = DA850_USER_LED0,
. [. H9 Q; T) T) \6 X, b
$ ~0 F- @( S* J/ V$ `2 Z                .name = "user_led0",5 |3 y$ x' ]" ]+ |4 ?
# g6 {5 O3 S- ^
                .default_trigger = "default-on",4 a# G4 A: X: s$ e  b

  p4 \' u. q% H% @        },
* k$ Q0 N- z) W3 E$ w3 F6 p+ J% k8 H6 z3 `2 D; b
        {
7 @& j4 t3 [8 L! m. I% _1 X4 E$ ?( t# L# W( n
                .active_low = 0," s. ~0 d, N! z
- p! w. S8 ~$ ]2 ]
                .gpio = DA850_USER_LED1,: p( t" m/ m3 A+ A
! a$ P# O2 [( @$ |
                .name = "user_led1",
6 d; C8 H) }7 s; Y1 S! R
8 |$ \! u" t7 |  D9 I6 {- `1 w                .default_trigger = "default-on",
) W$ w+ V. s6 M3 o7 ^7 _( I% l, O* n0 L$ \1 S  n1 D( S' J
        },# o5 \* N9 m, a- L

" A9 P/ p7 S* ?# Q2 r0 s        {
, ]% v* ]' ?8 U" D+ d0 b0 s# \5 G, l) a; k
                .active_low = 0,* D; T9 ~& [4 J: {/ k5 s1 Z
. s3 m' x2 }* v! b& K) ?' d
                .gpio = DA850_USER_LED2,
" x1 y. H& C, x. v' E; O! t/ F) W6 }
                .name = "user_led2",
+ C) |) [) {& A2 {" m" M" {) r2 o' @0 e- d
                .default_trigger = "default-on",
+ {, U$ v* f# @2 w& C7 H" G# L$ \1 z, E# C
        },
% i1 g- r! [! h$ F+ J; m5 _/ ?
) \" w; x$ s0 r0 N. g6 s        {
8 T8 ?2 q" J' t+ c+ q6 D( F- }+ W0 u9 V7 m
                .active_low = 0,
, I  E0 z2 P1 X: [* K0 M
& t( u8 C* C7 P; I1 i9 q; k. L. s+ p                .gpio = DA850_USER_LED3,
; H: n9 y! K2 @+ a! S; Q9 A
0 X+ ~. t7 l5 E0 \2 k; [                .name = "user_led3",' {0 d1 S$ _% [$ b

. B" @2 k4 B( h, Z# C( ?                .default_trigger = "default-on",
  C5 e5 S; I$ \# H& k/ f' F: y2 ^3 h" C" e( C, b0 {
        },; ~, R! E6 n/ c
  Z; n2 i& [5 b* `9 A: p( U
        {; p" T5 |3 i" n+ r! l7 q

" i; I% |# e) n9 r& ^                .active_low = 0,
8 p2 s5 J3 G1 \5 a
; d( h, h% M3 ]6 C9 O/ `  u: G# e  a% K                .gpio = DA850_USER_LED4,
: v# m9 @) ^5 F; q' ~" i
8 F5 V" [8 a# v! m. ?: o) [5 |7 a                .name = "user_led4",; T- V3 t9 E: u: j

, L7 [3 ^; W* w& d1 U3 I                .default_trigger = "default-on",3 N3 w( W6 j. c" }8 k" ~
  |/ v3 Z$ C! e/ v5 |- H
        },5 P' e6 i2 H2 x9 _

! z* d' a8 s2 ]1 R9 @1 V+ C7 ~3 R        {5 ~( z1 I. I, _/ H
. w, x7 e, |) z5 k! i- \7 T. d
                .active_low = 0,
+ `4 }6 e* F) ]$ J) c4 Y. K$ d& u' G$ g* C
                .gpio = DA850_USER_LED5,
  ?0 W* r) F- g8 j
5 g) I9 k, H) t9 _                .name = "user_led5",
  D2 T# C- W" r3 B' d0 A
: g" J) J8 j6 s0 E6 ~4 C+ j4 ~$ o1 I; x7 ?                .default_trigger = "default-on",
. O% G$ C/ m7 R' a& n3 D
" K  q. |+ \8 O- }2 _! H        },( h1 {! {" K) X/ {. V
3 b! ]( \. G% y, u! X6 L& \$ p( f
};5 \8 ^" A- R" P9 f

4 Y! d, m3 J; l! E. _8 [) h& E
4 f9 a$ U+ I1 K  @6 C+ N/ [6 S: Q- ], ?/ l3 E: W$ L2 r
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {% O) o- K9 z: A! ^/ ~( X% V

6 E  [+ q0 @. V# ^        .leds = da850_evm_tl_leds," Z! ]9 q/ @$ ]$ F' g
6 G1 ]+ \/ T/ \
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
. V+ s6 Z( {& O5 Z( W3 f
& m0 r8 f- Q- G. {2 [};' ~' Z6 s& \$ \& f* T) L5 e8 B, M! N
- W0 `; O* z3 m4 [) y6 H6 [, ^

  D8 r0 W4 n" ^1 l8 m9 U0 D: K1 P
2 T* H0 U3 m% L% E( rstatic void led_dev_release(struct device *dev)4 m6 V! ?, _7 s4 q1 E& \  R0 O

  t; T+ P% ]; S# {- Z0 n# L{
! t% F2 L' q  f( V$ v+ t8 L4 }
; ~7 M; @% f6 k' o  _$ n1 a% x. P/ |};
' D. {* F- T1 J; W1 [) G/ r
7 V: K; W5 @, a7 ~; i) r# j
$ Y+ s* R+ C  @- f( t+ O  r; s
4 i# m  P+ _% Z* h& ^/ W  bstatic struct platform_device da850_evm_tl_leds_device = {4 r! V6 q1 I) {! N% \# H
, Z5 W% h7 y( {  u' U' ]
        .name                = "leds-gpio",9 F5 ?5 w: V+ M+ ~

: P$ \4 d. m: b; A4 l        .id                = 1,
" E9 ^7 N7 A8 M0 [# }  R' T
/ o! X, ^9 }; G& N        .dev = {
9 K7 ^# `* t, K+ X/ [* `* {  G2 |2 g+ M8 x( C8 e
                .platform_data = &da850_evm_tl_leds_pdata,
2 l3 J, l3 _$ f8 M6 ]1 r& c, L0 T( u9 X1 }' W& J. T
                .release = led_dev_release,+ ?2 T6 o' o2 y- n

4 O' l, I# G! d% z. K& Q. f, u. q        }$ [0 M$ h6 r$ n* R* H" H
3 n# n# e7 F1 G( a# r
};
* q% D4 A7 w6 i  t9 Z9 R5 S8 W$ u+ x# A- H5 M
1 `7 Q5 d$ c' i; O

! k6 F$ k! ]' x+ Y: gstatic int __init led_platform_init(void)& T9 }- q* d' B6 i
! S8 p! L% g- d9 I  ], o" V* z
{
. m2 u0 Q; u0 ^* _" T% i# s3 k+ c8 z5 j; H- \' O
        int ret;" {: A, h( p. Y0 h

0 O/ p7 D0 \$ H% c8 J( Y#if 0% R, W% n  r, T8 V7 \. E

$ r6 F9 Y$ A, a5 W2 D        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);& G* [/ h+ G8 J+ [1 F* w8 `

" l6 ]' h4 o- O3 h; w9 I% b        if (ret)
  b: ]) i% D* J# X1 J/ _' R( g" @+ L2 ]
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"- s" L. M+ B1 b

' y! A2 I. p1 C% {# }0 e6 ]4 o                                "%d\n", ret);. `8 Z% z5 D2 d' C1 O% }% E: _

! U. `5 G! Q( k: R#endif8 X! h$ h7 j+ Z8 {2 h/ n
! _& m: {$ U& a8 ]5 L3 m4 R1 {" j
        ret = platform_device_register(&da850_evm_tl_leds_device);
) \) ]  d1 \8 K0 z" ]. _% {2 ?% X$ G* V9 a9 u2 @
        if (ret)6 i5 ^4 A" l: [$ i  g

4 [  X$ f; U3 N6 k- o" ?                pr_warning("Could not register som GPIO expander LEDS");$ o5 v  m6 Y  H+ j4 C% k8 I
# H8 h) _0 c: p( b
        else6 y  D& h. v) L% ]
+ p0 S( b* Y2 v5 ~7 X1 `& j! U
                printk(KERN_INFO "LED register sucessful!\n");
$ K0 S7 u2 g$ n( t" \1 m9 }3 `
2 r, T8 ]$ _8 b3 ]( c; s+ r$ Y7 ~" l8 z' h
8 v2 ?. X3 y" k2 Q3 ]; k
        return ret;* P# t) K6 z0 g& k6 a, y
# l$ h& j3 z) o. g5 b) }' T
}! X: ?2 D* O  q0 D, B* r8 H

* p' m, o# y) t4 w
/ P! t1 E* u! q. ?6 \
' q' t# v5 ?! C5 Q- w; Estatic void __exit led_platform_exit(void)6 Y( A, _' ^. D* k
& J! O6 l' C! K1 i
{
; J! s* u5 ?6 B4 |( l% w$ s8 F- f; q/ k8 c/ Z# s1 P$ `
        platform_device_unregister(&da850_evm_tl_leds_device);. H; [4 b! _' Z  i! T  r( g2 V

0 w, d4 J0 t* W6 `! s/ m/ |) o; ^3 W
2 Z! y3 F: t" ]
        printk(KERN_INFO "LED unregister!\n");
2 S: p/ E% K4 ]% @3 [0 S7 ?2 I9 b0 U- M+ M6 ~7 g
}# T1 S. x; `3 I; ~" C% `( g1 n9 I% E
# C) q( [& I: d, g% I

( f  A) M" `. {/ h. {) b, D7 ]
3 o& R! [6 _" F$ z- ~module_init(led_platform_init);
! Y' ?5 Y) ~7 U1 N5 y7 _! p7 N6 ?9 Y1 ~0 G
module_exit(led_platform_exit);
8 s0 j+ M1 {  W/ I9 y% |6 o
8 k9 F/ N& M8 S* |8 ~2 v6 c
  t/ P% o8 d" e
3 e6 A+ `0 a2 S+ ~8 qMODULE_DESCRIPTION("Led platform driver");
+ H2 R% Y5 `( R$ S& I* m
) I1 e, P5 O7 l/ e. JMODULE_AUTHOR("Tronlong");; s' R- ^. ~: G& U# Q

3 S- B/ \& A, w9 OMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
8 ~3 Q! w9 i- \$ V6 q/ v& Z. ?

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
2 n& A) T! @5 m" Y2 @" n7 b- p8 \您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
" t* w0 B. _4 O! Y* |) x  a ...
8 b5 y9 G$ K0 F2 ]6 H, W3 @. C
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
$ T6 i. K1 I, Ohttp://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 08:13 , Processed in 0.044343 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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