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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 9 A( i$ a0 M+ S& d' ~6 M5 k  N

2 C4 O8 o  d4 d) |+ M请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的
! z7 z, W* R6 \- r* w8 L' N7 I8 \$ y# `* A8 K: @
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?
. L. \; J8 T9 @9 P( [1 g' L  p
# Z" Z" d7 r, H& n# Q3 F3 Z2 p5 f( a

本帖子中包含更多资源

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

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

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
板凳
 楼主| 发表于 2018-12-14 17:29:27 | 只看该作者
广州创龙莫工 发表于 2018-12-14 17:14; S- I$ J$ w3 [( e4 i( J" w0 K
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
' E  @* I  X4 }. A. j: C( O* n) L' [
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
: o5 Z( W, p- R$ y8 q0 [: m#include <linux/module.h>9 C# c' V9 H0 M0 X5 a
- k3 j1 a# w0 K* k& b
#include <linux/kernel.h>
, B4 D, K" V/ t- k) n
8 f3 V; }# c/ \$ u  I#include <linux/types.h>. i, l0 E/ }$ ^) ]; h) s

; ?+ `) z* @2 i4 f#include <linux/gpio.h>
9 y/ ]8 M8 J6 T0 B
# L4 {0 G( O8 I" ?" f#include <linux/leds.h>. B: \& u+ G0 Q
! z7 L* ^, x/ t& J
#include <linux/platform_device.h>
: U% Y8 o" w9 l# a/ b1 u8 L4 j" h3 A+ `3 x3 s( M* c/ m& E

2 G, Z. ?" m  M0 h, f, J, u, C) x0 N" o0 t5 ~7 j6 O) M
#include <asm/mach-types.h>" v3 g, y/ P1 T

: q: N% p7 D+ R( ~#include <asm/mach/arch.h>' O- h. s! T; Q8 z

! E6 x4 k% ^; ~, G#include <mach/da8xx.h>4 {# r% U- ~. u$ |8 l+ ~$ Z; D
3 ?4 P1 v6 w$ w6 D
#include <mach/mux.h>9 I5 d- p2 o' w; a" }% o( ?
- N2 _7 R9 X- _9 b4 F
- N* B) O, W9 m0 ?% b/ v" U

7 k; L; n5 d" W+ Q. d0 g& H; C#define DA850_USER_LED0        GPIO_TO_PIN(0, 0). N: {! w$ Y3 J2 j: K* {' U3 O

2 _2 u6 _% {! E#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)( R, X0 x* x5 A
; |3 \9 E/ n( ?8 ^0 O: G: W
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
/ c, R7 |. z) k$ ?6 t
& L- R5 a$ n  `7 k- e; K#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)' p5 Y  Q! Y! A5 _0 I" k

4 p9 P/ Q2 b2 u! H" {, W#define DA850_USER_LED4 GPIO_TO_PIN(6,12)
. l& i) `( Y4 y* G" R, |; S* C
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
$ {9 C# i2 j* J, o; }( }( o* o) F, A* t( e# a. M9 V9 R

" y1 X4 l0 M3 Z( t5 ^2 f. F6 g9 ^+ s) K
, ~/ z) G' X7 J/* assign the tl som board LED-GPIOs*/0 ]/ G7 G, f. O

. |& p# @5 z2 \4 V2 g; `' tstatic const short da850_evm_tl_user_led_pins[] = {8 u/ |) P% V8 `( }/ E6 b  d
& |  u% Y# ^( B/ W3 G" n6 Y
        /* These pins are definition at <mach/mux.h> file */
4 a* q0 B5 T* B2 B: H
+ \& \* S/ Y+ R4 E$ A        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,5 V' O2 j3 \. E8 }6 W# S$ g: O
1 k' u( {5 Y. a
        -1
8 O# O/ v8 F4 e2 ?% p8 }7 y! [
% L- @" W5 M6 I) }* C. i2 ?- G};
  v) `. o( x2 X6 N' s' p9 h. E% ?4 ?. [$ x3 X7 M5 u0 [3 k1 W6 E
( f7 N# h& D" b& Y( @4 s* k

8 L' J; n; a* ~$ a5 v/ `static struct gpio_led da850_evm_tl_leds[] = {9 C* F7 M) ]3 e! x9 M4 i$ ]' w: i

8 A3 _- _/ X4 }        {, L1 J8 i! H% _- I0 }

% o  [2 v/ B/ h) q7 @( `3 |5 o                .active_low = 0,
: X/ K9 B( }# _) r1 ?6 u; _1 b, f
; E5 n$ v  b3 v5 j& H3 P5 K: l                .gpio = DA850_USER_LED0,5 T- Y" w) H6 k+ U0 b

$ j5 u) _+ Q3 v5 ~                .name = "user_led0",) i  A( O7 N) ]' n1 H

* t: _- b' x6 z1 _                .default_trigger = "default-on",+ p, b) a3 u& r# v
0 |, v2 W$ \/ c/ @8 r
        },
3 M5 d  L6 f' b$ |2 A1 q: M4 w% R) a; S/ J/ J9 I6 g, b
        {6 |  z* B! J: [1 Z7 t" {
8 k" g+ A9 r" q; }) o! q" n
                .active_low = 0,$ Q4 y% k+ S" ?$ b, g# {

9 W7 L! l8 T& g                .gpio = DA850_USER_LED1,
% X6 O$ d1 d: Q6 M7 V4 B
9 O# G! M8 r6 Z2 W1 J7 z                .name = "user_led1",
2 ?: T$ a" ^( j
. Y: M6 Y* s" l1 O3 t) e7 c                .default_trigger = "default-on",+ b* i- L0 Q' y& f# U

1 c' Z( \7 C6 q        },: N% _$ G9 s- X( b, h& g

5 ?- T: V5 z- i( K+ F2 j5 D* D        {
) G# q% h" W- B/ ]$ k& S" X- C" s" a! Q! N" E
                .active_low = 0,* |. T# ^) b8 `* Q
3 o! D9 C9 ^# c8 I& W
                .gpio = DA850_USER_LED2,
6 A2 c: F. Y7 O7 P9 X, \* Q
8 t7 h2 j7 k! M2 E+ Y$ F4 ?                .name = "user_led2",# \! H) G* v4 M8 K% Z; [6 k9 ?: {
$ W; q  j" M8 e
                .default_trigger = "default-on",4 ]' ]' _' P3 O9 O9 o5 Z
# R; s/ r; B0 x
        },, i: N! b: B. @; J. a4 ^( l% ?
' i/ p) M, h" j& G! d# J* O
        {
7 s* E, G2 A: v( Y/ N  j; E8 M$ Y% f/ k4 y) C8 P5 P' w' @
                .active_low = 0,
6 L' `/ s% X$ `" c& j% G+ Q- }% Q& t
                .gpio = DA850_USER_LED3,; t: v& B1 u: b
; H# c8 C0 V2 ^4 E
                .name = "user_led3",/ [: E4 S- B, A
6 b1 q$ ~, Z& k( R2 s0 _
                .default_trigger = "default-on",) a6 ~/ S/ k1 U+ a6 S

/ Y2 k( \6 F: i; s) R  t" Z3 {        },
& }4 k% G6 e1 W" T0 J& z  |- r3 N" x: B# U
        {
# X8 W( n  W7 G4 l, B  s) p; l, k9 X* v6 A) y; V! y, I
                .active_low = 0,
4 d7 t8 m; g) r  ~5 q6 o* d# O6 c/ x* N, E
                .gpio = DA850_USER_LED4,. k% H! O7 t: g. S! ?  L1 V, J
) |# o' k# q& f
                .name = "user_led4",
. `; l/ z% q# N- i  K0 F$ |
6 q# V7 N7 G) ]5 {, E9 A                .default_trigger = "default-on",& ~, G2 f7 E: E! \8 u) H
0 u/ s) J: ^. V# `: a8 ^( U; {
        },
3 c3 l7 r9 ~( k2 b. B) O# s) P$ J
, M" W8 p5 b* ?0 e/ N% C8 Y) L        {0 G2 b# h2 G! b4 B. a; G& _1 r

( O0 @# [1 ?) c2 W                .active_low = 0,/ ~% l8 P- V9 z8 R% p/ f
* ?7 x* j; e) a9 c: r( Z1 V, e
                .gpio = DA850_USER_LED5,
" A5 v2 j- `8 k* i$ G) F6 ^4 J1 t  A/ z+ A: D4 h$ R. c
                .name = "user_led5",& C2 X% H" o! W# a1 f
) W, y% @' {2 J. N" Q
                .default_trigger = "default-on",
4 V/ V! B3 u8 O$ _  \% X  l- f4 u- J: O
        },* ~4 i" U/ s0 l4 L4 F" V1 O1 F) T

  n, Z0 {* b' g$ X) J/ L7 M};
+ m$ ]; G; t) e/ L. M5 U
- G, U1 \- K- f! ~: t' a8 _7 ?+ Y" ^! p2 d; s2 K3 g( T, H/ c0 U

8 \) s" i; i9 ^/ b2 E1 G1 ystatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {1 Y& K" z8 h7 b3 t0 P$ M
/ i% g4 D/ X, @5 ]4 s7 d
        .leds = da850_evm_tl_leds,; s! q: q: p' `" X/ s0 Y' }& Z

: Q8 A* }2 }. t" @" M        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
; u( e1 O, }" \2 f" x6 Z
) a0 w; l7 t2 f; l};
2 d$ }& R9 a- N. X- ~, z0 @7 t8 V2 d) ^; N. P! A% D

! @& I1 H* |. f$ }8 Q1 D( v, \3 o* ~/ B) a- G" k
static void led_dev_release(struct device *dev)
! E5 i0 q0 b' x1 R
9 j1 }  _2 [( b{
1 f! h3 W% u( o6 a0 M! L6 V( j* G0 l, A' t% T( k
};; \) R& P) e& s$ A# N3 M% e& r
, o7 i3 ^& m, u" o: @; e2 w

# ~5 \! S0 N1 s$ N! H, j% `1 P! W% \
& W, P: Y$ J2 ]: Istatic struct platform_device da850_evm_tl_leds_device = {
0 B2 v+ D; B) z: @/ u; N' N  b2 R# n$ `1 ?( G9 l
        .name                = "leds-gpio",5 ?- B( ^7 g2 h# X
) R6 j  V, R2 W" s+ u3 i5 u
        .id                = 1,- G; u% h. K% a1 F. n7 e

; z# d, q. X) b$ M3 J1 K) t        .dev = {1 F9 ]& c+ r- N  j
2 p9 l6 r/ G8 b
                .platform_data = &da850_evm_tl_leds_pdata,
$ s: A+ n) y5 k. {
" C8 G$ ?$ h  S1 J& }                .release = led_dev_release,
( N* m" |) G4 r+ d: ?4 l# U9 I# _1 t# c& L, E- {$ h1 q+ P) X
        }; _5 C4 I1 T1 u& |# Q: a
+ u, W( X5 k; l6 w, L9 ?3 l
};
" M" l, Y! v) S7 G1 Z2 a3 x
1 d, j! f2 L6 A' ]" m4 A
8 o, h  }5 Q1 S' P/ r/ w' R# ]% i0 |
( Q; K: m( \/ e' m+ i8 I! t7 o, c. Ostatic int __init led_platform_init(void)  F8 |3 F- U; D

5 w6 @$ Z0 J* Q* X, j* Z$ s{
9 w7 d, l" f  J
. G, s8 v% ~# _  O1 s9 v        int ret;- Y2 D! D+ ]$ Z2 b+ y. a

9 A0 g, Y8 Z2 w" T#if 0; [: V. X$ t" N7 N7 l" i
: r, r" Y( N5 W. x+ t
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);) u- ^9 l/ i& }: p! A
" ^3 C  a' L2 Q- s' Y
        if (ret)
6 a% x8 O: E, T
% h; ]9 [) x9 z' _1 S. `                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
" v' w; D* ?5 M
) l8 z  }8 s' H9 M, q+ L+ Y                                "%d\n", ret);! c- V$ t. p+ t/ [# W
9 P$ Y$ X, ^# }! [
#endif, @: I! b$ E8 i) B, ]
6 m6 C# l' A5 x& |6 Z, G- q
        ret = platform_device_register(&da850_evm_tl_leds_device);
9 ^6 |6 t" w( y6 F" d% q2 {9 ]5 z4 ~
        if (ret)
# w0 x; X! \2 P: ^
1 v5 A) g2 Z2 l  |) C( D                pr_warning("Could not register som GPIO expander LEDS");
- G! l* d5 Z( A/ E
6 c. f3 d( u: G% e( `1 s        else6 I5 E! e; z4 @/ Z
' ]0 e$ q# z" P5 k
                printk(KERN_INFO "LED register sucessful!\n");4 [, b2 s6 ]* T& v( m
2 H" }# r6 w5 @
% k+ H: M" w1 O' u" g3 h' H. ^1 y
! g0 t; P) M* ~6 B: C- v
        return ret;" y6 H( E( G  N8 I) ?0 p
- W$ ~( Y  R  |; }
}
6 P; n# b! {, ?9 {+ b! U6 S4 f9 |! l( t' A& a

. E- B( U  s8 G1 B* H
% Z: V0 U; W9 b$ ?static void __exit led_platform_exit(void)0 Z5 l' i9 u& i5 U9 k/ i

' E9 A- Y, \/ E$ t2 P{
# _% [. [' |) J1 Q, W5 G0 O; p/ Z+ J4 W; c( ]
        platform_device_unregister(&da850_evm_tl_leds_device);0 O6 Z& `1 A/ h  S0 x

- y% o  N! F% |  g9 d  R+ j: c" H( |4 w& S& I* w1 }
" o( K6 ^# [) H9 v/ s
        printk(KERN_INFO "LED unregister!\n");2 [( j$ N1 Y$ L* f3 [4 C
% a: `5 W+ e( F9 Z6 ?) ]
}* k2 N( Q8 ?$ S! q
2 K3 ?; c7 O& r9 ^

  |& U# M& H( B; u! l4 F& `; q1 n% e: B* t% r- N. J9 f
module_init(led_platform_init);' D4 d) u  I# k; i
; |; C8 b0 ^, |! P1 X7 I8 Y& S
module_exit(led_platform_exit);
9 e# C+ S  u3 [* C
" o5 e6 x3 }$ ~: N% o1 `
; F" A. j6 i8 k7 ~1 ]) {+ D
1 I1 W' q( F% r+ M, yMODULE_DESCRIPTION("Led platform driver");
: i. S) u9 d' L. R, S3 p% ^2 C2 M! ~7 s: R6 f
MODULE_AUTHOR("Tronlong");
, P5 r+ T: r* t4 N$ o7 Q/ W9 h) M0 R, X/ Y, q, S
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。  K. d, c2 y7 X/ I' e

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
) m- r1 v8 V5 n) _; X1 B/ k您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
& Y5 G- n9 a' M1 L' j# |7 K ...
6 s" k  x. w& N. _0 c' Y' O
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。6 f0 |$ F# K/ @0 V
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, 2025-11-5 12:45 , Processed in 0.044435 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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