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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 ! U5 L7 B( s* r; g5 C( u( C+ R

) X% H  \# ~: S; V请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的
1 {( a& ^( \, D% w! l2 x% ?' ^! G
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?
" }& k9 G: H: s+ K2 F  ~+ ^2 X
% a5 M$ J! V4 \( l" Z

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
7#
 楼主| 发表于 2018-12-17 17:29:12 | 只看该作者
额  还有这个视屏啊  早知道我就不会问这么多了 谢谢提醒啊
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。# j$ U- y9 {4 a$ n& u( u
http://www.digoboy.com/video/id_4408.html
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32) n; j0 z# W' T) M% N
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。+ g$ [* P3 W; {' t
...
; g6 r1 K  P4 ~* u# p. t( }
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
# I, [9 u8 a% m

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
板凳
 楼主| 发表于 2018-12-14 17:29:27 | 只看该作者
广州创龙莫工 发表于 2018-12-14 17:14; A) o2 v. M' z% `) k1 a/ ^
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
8 O7 k" T' t0 D: F
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
% ]5 Q5 O$ y# T1 ^#include <linux/module.h>
; l+ {$ k. @/ x! a8 i: U, Q( D
+ L, N4 i6 J9 H0 R7 }, _  a#include <linux/kernel.h>% @" j/ c; u1 N1 p' R
' b0 B* X7 ^# J! M3 C
#include <linux/types.h>4 \1 K: o7 M  d( w8 Q

2 J8 d! a# ^/ \1 E) K5 d/ t#include <linux/gpio.h>9 t+ P3 [' P+ E

; J0 O, ~0 @! x* l6 J! e#include <linux/leds.h>
) }/ ?1 y" c8 h$ J  R7 K  S- q( G: M) h5 d) D8 J
#include <linux/platform_device.h>+ u5 O/ s! d7 Q% U1 v

( b9 k+ g9 z/ e& F; B" f! Y8 s4 K2 W! ?5 G) M
" a' h# ?# g7 l2 y3 f
#include <asm/mach-types.h>
" M9 C: J; ^" z+ a% m& P8 y4 R; B, Q- F7 ]( ~  w1 e
#include <asm/mach/arch.h>
2 B* W. f. A6 c0 V0 Y5 X  T# G4 e% ?1 H
#include <mach/da8xx.h>/ g) F( Z0 q: X6 L! I. l9 X7 ^9 m

% p6 u; [0 r& l* P- W#include <mach/mux.h>, f1 I- V" \2 V$ _4 i( I6 }
( L  j; \  Y  I
+ i, U+ K% J+ F: n: L; F9 e

7 }: s+ P1 U( E2 ?2 D#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)/ u) X- Y$ b2 k: S
* x0 S8 m% Y( w
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)( K" v6 ?2 C3 W0 I9 Y
7 H. S- F8 x  B( {9 S
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
8 n8 n( M4 p! B; s* Z& r& q4 L$ a! ?# H6 Z
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
$ F& _4 j- p# F* A. g
( |+ ^# t# Z! o" I! U% L# [9 m#define DA850_USER_LED4 GPIO_TO_PIN(6,12)6 J* n' l# C+ {$ B) s$ f* {) B

& W! i7 p. L/ Q3 e, K1 Y2 m: e# ?#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
! V. `8 F, o, N9 }5 g' @
! z  Z7 V& }( L
- g! \: B0 m' t3 J9 m
. `& G0 Y( ?% y# X. f! Y/* assign the tl som board LED-GPIOs*/) o  G$ L9 T: u3 m) t# F

  F% T! M$ I& Q7 K* d) E% @static const short da850_evm_tl_user_led_pins[] = {
7 n8 f: j" @; y& B6 k# N/ J$ I" B7 h1 B. r
        /* These pins are definition at <mach/mux.h> file */
7 x! j3 W7 Q! B* h8 p: u' C$ n
( m" |) r/ t, o1 k" J! {        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,* q( Z% V, L* E. e  `" E
% ~# ~2 x$ g3 d% c# m# w( I
        -1
/ t" r: r8 S2 F. \* ^; _% s% h2 Q* `& I+ s; V) o8 X
};
7 \; J6 L. L" g& H4 \( S+ v+ W' Q1 ~5 P) y) k; P: A1 z
' E* N$ U' M7 I7 W; Y# M+ t
" Q& K! n; ?# n7 p" L" q
static struct gpio_led da850_evm_tl_leds[] = {: U* f, R: ?; M; ^. L. u# z

6 `% R/ Z( c! s) V* W7 f        {% B1 V8 A8 h- J2 ~
% C1 E) {8 x+ u: W$ U2 o( L
                .active_low = 0,
4 i; D/ X5 q' B9 \, g5 v9 o% y% |: P9 X( K! H: X! @' Z
                .gpio = DA850_USER_LED0,/ N$ b5 X( |3 X( u* _5 n

/ p2 a) E% ]2 ~2 D7 l: x! l# X                .name = "user_led0",
6 P9 L2 O, S5 j/ X5 b/ n% {8 |) v  \0 e7 |6 K8 A
                .default_trigger = "default-on",
% P' _0 A) K9 ~+ L
, K* ^+ x3 e" R" J1 Q8 F        },
& ~6 M1 G. Q8 J& I# c/ h  L& d$ `- \  ?! b, W) s
        {
; ?* ?) j* }  p6 G
9 _$ g, c( Y$ t9 y' c* x& [                .active_low = 0,
  A& g7 m: r# e2 K0 v9 c" R+ f, T+ Y0 E( ]) D
                .gpio = DA850_USER_LED1,
/ z1 \, z: U3 \2 x. B; e- d3 ]+ j3 `6 C2 H0 v% ]6 E; J
                .name = "user_led1",. h, h+ U% ]7 r/ e! F! r
0 D/ d# n/ s4 N) g/ F
                .default_trigger = "default-on",
$ W# C1 l+ w9 C' h" U9 m
% m6 p7 Z! ~. y8 ?, d7 T        },- X; e; A5 o8 @

5 i' ^- U3 R% g2 Z" Q        {
3 }. g* S7 P& F; F4 H  e+ u* C4 w. E+ ]7 f% M$ _6 ?
                .active_low = 0,: D- a9 ~: X; K. W* a: I
' ?& _& I3 C9 P( t- e+ X: l
                .gpio = DA850_USER_LED2,9 H% p" A1 b7 c( T

8 t- y) G' c) x0 q% {$ n7 p                .name = "user_led2",
! C3 K; o# P/ C" {" T) O3 s$ N; c7 a  q. r! W, `' ~( s
                .default_trigger = "default-on",
2 z& }% V* h6 G, r; H
' v" A) [% s  T  S        },
# {5 m/ X$ I5 T
- u+ n3 u4 y* U* |( N  o! B2 ~        {0 c2 ~9 R* _, w

* i8 S- N) F; o5 w( a                .active_low = 0,
; ~: p, l. R6 C% e+ m
$ @" o1 s& z/ N) y. e                .gpio = DA850_USER_LED3,
/ ]$ i/ E. p# u+ A5 ~2 |
2 O1 g4 ~4 V/ E                .name = "user_led3",
* M3 a4 f+ q! W/ L" V; d) n5 m
" ~& M% g' N: l                .default_trigger = "default-on",& Y; B2 K- h: I# a

% p+ c9 w& N0 O  w; H3 s        },
4 E( o  k% A; g1 T
. G" o, ?3 d5 O. v% ^: ?* Q        {
) N0 s+ e; y' o" B8 \3 x; S5 u4 A1 |! x; s; `+ [* o
                .active_low = 0,
4 H! n  J' M& M, l6 C1 v$ i& L3 X! _+ w4 R0 R. U# A
                .gpio = DA850_USER_LED4,
# a3 J" k, B& q( @8 U; T% t: _  C  B# w# P! X( ^4 i
                .name = "user_led4",
, _4 ?+ T9 K* N  U' R3 a" w; k2 F, T" U) g
                .default_trigger = "default-on",
2 ~$ f; a1 n' I& }4 R3 T  s# I- Q8 y: n8 q- J. o1 @: ]( w
        },
7 a! Q' U* j# U4 e7 d
5 }! z* x# }$ }" K- J# P2 r        {
2 V. N- |* f4 o" @/ Q0 Q5 H8 D6 H4 e( ~! _; ]
                .active_low = 0,1 F* {' \$ I0 i7 V

, `& g8 e# `% X$ S2 W0 I' d                .gpio = DA850_USER_LED5,$ ~1 R; z# O8 ?
  Z5 w1 h) j1 s/ G8 U3 h+ D, Q
                .name = "user_led5",
& H8 f. [6 M$ f5 g! V" T. A
+ N) n' E7 ?) r8 j+ R                .default_trigger = "default-on",
* A" l) n- y6 X: k. R6 U1 }: p9 w8 R: f( _5 |
        },
4 T/ g9 h- v* y$ }1 @4 w6 ]- _+ E$ n, A& s% e
};
0 h4 p3 [/ J( T. a1 u
: `* O5 G" A" z& Q3 G$ c' h/ Q" R" f& q
( F* C- r" y; ~9 l' f3 U
1 {/ E8 d, B4 K$ Z7 ustatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {! d% _- F" S7 Z! z/ W

5 o- x: a, I: \5 u& D1 J        .leds = da850_evm_tl_leds,! s- l' B9 X4 G" b7 {- b+ L

: u, A6 ?% ^! P/ w4 a        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
  P" [- [/ `3 e) v' Q1 Y5 {9 O% {1 G9 t4 x6 t
};
- h+ W4 q0 \" M' C. d3 V' R; B6 ?) m8 r" z! `8 {# L0 {9 v% N

1 g' `5 S: V2 J0 n. J* R4 M2 X
8 k" z8 m2 M& I, R0 Dstatic void led_dev_release(struct device *dev)
& Q7 P! |  a; \3 H( X: f" z6 j
: |: ^' X1 h0 }% {! b/ o- s{
$ y# }* @  }; G2 r# f& x8 p4 U, \0 D/ K. T% Z
};
( x" I0 n6 f1 C# w" x' X8 x7 p2 U
  `+ a( z* r  X& E# @  y( Q

9 B) p% Z- L" f  f5 fstatic struct platform_device da850_evm_tl_leds_device = {+ F- D1 d5 y9 O- K: }5 F; u/ A

3 N! N8 |% f; v2 B2 a# R        .name                = "leds-gpio",% ]% z. y% U/ g" a% Z

) q) S% z6 L, c1 N( u        .id                = 1,4 ^7 D) Q# r' z3 c+ p8 W+ [
) ^5 p6 O) n8 g* r0 G# w* n) L
        .dev = {$ P3 H- e) G1 }7 O4 T3 w1 ~1 z5 Z5 u

, ~6 A/ \6 N# K( I  G, x4 N8 n$ e; e                .platform_data = &da850_evm_tl_leds_pdata,
  A7 S* I" L% u# C: P+ m
1 \1 y& Q) x8 a9 H                .release = led_dev_release,
( j! D) }% u+ B6 l* @9 W+ Q
' [7 t  g  V3 [# b# X, i3 }9 W        }. l1 _# r* R2 N2 u1 v# b# d

5 {! B; u% c/ G+ `- J4 P};4 @! D: b( ?' I8 k' U
* M6 C7 b5 x! p9 {- h

+ _' G) o# m: F. U+ a$ I; u0 }) ]/ a& w, o
static int __init led_platform_init(void)
0 Q5 N( ]0 T4 d! \: `7 h8 ~
  |; M& O4 N, ?{4 _6 s- Y. g  h

% o. m, U! I4 J& \# d& E. Z: ~        int ret;. N6 j8 M* \; D; ^" U" v
* j# p6 T2 ~8 I5 ~1 L; V
#if 0
. r& }6 Z2 S7 F) g6 }8 {; X& k2 E- ?9 B$ y7 B: I
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);8 ^' r" B4 ^  ~
9 B$ i& G! ~& I. ^$ V2 I0 r) w0 c
        if (ret)6 h5 b7 g* c5 u/ G
6 E! {! h& C0 m
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"2 ?5 e  ?- m* o/ ]  W( F6 S

0 [2 H% h+ s. ~( \% y% [                                "%d\n", ret);; O* l, v  V. o) h3 W4 k

" h: V, M' j' i" w9 s2 ?4 B5 y#endif
  R* C& ]/ ]2 W0 O: L
5 R3 l. J+ V, }, o        ret = platform_device_register(&da850_evm_tl_leds_device);
7 q7 S; H  f9 R3 i
: n2 [% I: @+ m+ g: \        if (ret)9 V/ t4 {/ `0 y+ m

0 ^' k  t- Q- t) x! `                pr_warning("Could not register som GPIO expander LEDS");2 z) E- w! t1 e8 q4 O" t

+ L4 w" m8 G$ @" E1 b, |! d& k        else5 y  n* ~1 S" z9 `

' K9 r" s2 [' N. J' z6 q4 k                printk(KERN_INFO "LED register sucessful!\n");# |1 z( F0 U, \3 n( c
& v0 g5 q/ q( j% I

( O2 m* }* N5 [3 O3 s* O( E4 r3 Z3 Z$ `
        return ret;- {+ R9 Y0 h6 c' x0 y
; D) o& W4 J) c7 Y! r% ?
}, L5 r/ m% z, H( g& ^+ e1 A
, h  c! w9 M0 n

6 _4 J2 t2 T8 H& P5 h+ [
, s+ y3 s/ X- U' [static void __exit led_platform_exit(void)
5 B) ]! a, B+ R5 g, g
, T! A2 V# a# _6 V9 w: p{! f. ?# C1 f0 O+ W' M; m& `) g  M
% |# i4 b  ^( E; _+ t' ?, d
        platform_device_unregister(&da850_evm_tl_leds_device);. n4 a& ~' {- Y
7 `6 W$ F0 _# y  Q, |& P- E4 `& w2 I

0 L! b: T+ w" W: I/ ^, @! W
! m! T! |8 `% W2 j/ [6 M. V% s4 O        printk(KERN_INFO "LED unregister!\n");
1 Z  |; a8 l' R+ z8 i  E
1 m0 Z0 Q: g9 z& I1 e; {}
) j0 ]8 p+ \( o4 E: y$ J6 L1 h
. T9 e- `. w9 B0 _6 n
4 Q) G; @3 f6 y$ p6 k& o" O) ]
$ Q8 _; j' O& k( ]module_init(led_platform_init);5 b! t/ }  J9 i+ d* h

) f9 Q% l" o; I6 F5 W5 Y3 v8 Emodule_exit(led_platform_exit);+ Q8 D# ]8 @  q- M# E2 @: `

1 ]  ]/ l  R' l) J- T, a. V: y( l. t& E3 b* D3 X3 G

' u( \8 X% v" |3 dMODULE_DESCRIPTION("Led platform driver");; R5 m# B" c4 T
$ y2 B! J# z6 @- G! U8 z# v
MODULE_AUTHOR("Tronlong");
) \/ Z( B( |# L
0 E" A" @4 T  {) P. C' JMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
沙发
发表于 2018-12-14 17:14:42 | 只看该作者
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱动,通过应用程序访问驱动去控制硬件设备。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-12-14 16:03 , Processed in 0.045524 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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