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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 & b  o! z% f. M3 A

/ v8 G9 g" k$ u- X. ]2 }: Q" }请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的: ~8 b$ D7 H7 F0 w* T; p' M2 r" `
( [* i* E; [5 ^$ L
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?+ [& Y1 N2 W; R
% a/ ^& m( j, I- U- 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:14
3 h7 C3 K7 U. K0 b8 P" Alinux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
! ]* w8 B. j& N& N8 \* x
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
3 b6 ~' B$ a- U( x4 O#include <linux/module.h>
8 C7 ^& g$ r! @2 S' z% G" a* D& l
; H! a) ?1 b  ?- r6 J  d5 I& g#include <linux/kernel.h>  j1 [3 @1 _. \- B

& ^+ _4 i9 F3 T7 X7 g#include <linux/types.h>
0 n& r$ D1 S' Q  h! y& i: _" H- G& q9 q& p, i$ s
#include <linux/gpio.h>3 I1 X& V2 \5 g; A# r

$ `. F. i) C) s6 b9 i1 S, t#include <linux/leds.h>8 J- @" _/ T" n! y6 `

  Z, l! b+ t/ ]) T& ~#include <linux/platform_device.h>
  f0 i! {1 N3 K) T/ {* O- s
7 M# p5 }7 o& i" j# R/ a7 E4 ?( q. z5 M4 u7 P/ q( a# y2 X1 Y

5 G% g  w( h# M( M% Q% f: Z#include <asm/mach-types.h>
- ?0 Q' O# {  A8 `  G, x9 q; u! p7 K' V2 \9 W: l" c
#include <asm/mach/arch.h>
, f9 X! K# h4 z; H1 Y$ ?
' Y) e9 a  N: N' {' m) c#include <mach/da8xx.h>
/ u9 K, X7 ]8 {! h9 }) J8 B3 w
5 w( b7 G( M0 Q) L. R#include <mach/mux.h>& d$ s" n7 V7 _" C  [6 i

2 Y. E9 o1 Y9 D) p# Z7 {' f' ?& A$ ]9 T/ L- R9 i5 Z

# v1 r- V! B- B2 ^8 D4 `0 L  o#define DA850_USER_LED0        GPIO_TO_PIN(0, 0): G0 d" ?9 w) K8 h# _

4 M0 k0 l. H* Z6 i  H9 ~#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
: |8 W$ J0 m2 Q) |* Z# ^9 g4 ~. U+ G# p
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1): F3 n! h. s* _
' b  m7 U& k! k- V5 n. ]# J
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
, _7 I2 \* t5 d" V6 U. O( d# i( q( b  [4 A( t0 l
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)
0 j8 e5 B% }: G' ?5 h9 K, l% H. z% z! f
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
: G6 l* u0 z. A# K0 \5 n& S
% L6 V8 |0 X' Z6 D9 U4 _0 I  ~
" B8 R5 X  `4 @, k: i7 B9 T
( H) P7 z) m/ W$ l* l/* assign the tl som board LED-GPIOs*/
  z  K7 Z" c3 s- s- v! o$ c; c* Y3 C/ w
static const short da850_evm_tl_user_led_pins[] = {) J& L6 b- C" i8 B8 g7 w

; W1 Q7 |" J* Q( ~. e! A5 v! a        /* These pins are definition at <mach/mux.h> file */- y5 v* @, Q9 C5 G' J8 @4 Z
" Z: y9 x: m- U0 b
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,( |6 a0 B6 }6 S% h) z: r9 _) Y
3 K  S8 ^. `- ]2 O3 t, }' l# G' p
        -1
6 P# y/ {/ X. K' x: E5 v+ y/ ?
/ K9 s  W7 n6 L- P/ o};
! ^* Q2 ]+ B+ ]4 |# _# `0 e/ K0 r( d6 p$ j4 f
) f9 R! r8 s: Q

% I' V4 o( Y* _1 ustatic struct gpio_led da850_evm_tl_leds[] = {  n- B: |0 M; P0 {6 h
' s! c; k+ M% }9 e/ P5 a, H9 @
        {+ ~5 w8 L2 V' r, O
" f' H) e# o5 }- `8 T4 g
                .active_low = 0,# M5 p3 f$ ~' @

. \: E1 C' a& X9 ~3 ^3 Q. O' U                .gpio = DA850_USER_LED0,
- _. n! e5 D* \* }% u; H0 `, r" L$ R% @1 w
                .name = "user_led0",/ d) Y: G6 n% r. b
* T! ~  f# T# L  Z
                .default_trigger = "default-on",
; F# |5 j9 E- `5 E$ N! Q* Q4 N0 `+ J! k3 Y- ]% l
        },
" N: ]5 _7 c5 l% u2 x
+ m7 Z& s# [1 @2 ~1 W, W1 j( F        {& s& U2 ]# d$ b; v* Q; \

: T# {2 {/ S( b) ^0 c1 N                .active_low = 0,! a2 _5 X9 F% i# O  [3 |( f# x

0 |& f. z& U0 e( D2 w9 r9 q  x- k                .gpio = DA850_USER_LED1,
# k  [* F5 l( @! N! m
. t2 ~) R- a3 v$ l6 c8 |. J                .name = "user_led1",6 K- ~, n; Z8 A8 C/ \& k
* t: b+ |/ F1 G% \* |8 P* c0 e
                .default_trigger = "default-on",
' \! g0 `6 D, {  X5 [' C$ g0 H+ y# v
/ ^- T& q$ s/ R& m2 N        },
% R7 Q8 R$ n9 W+ f4 W: P& c3 X$ ^( ^2 g) ^4 R
        {
  L5 r& D3 Z1 y, o. Q
# t1 a) n9 r! @0 }* M0 b" a                .active_low = 0,
2 I" \4 t) q* p& A- N- z) o6 S2 }) j$ `3 g  o
                .gpio = DA850_USER_LED2,- f. d7 |; }) S+ V) T/ a5 f

. M3 v! B% {4 d7 J/ g# F7 E5 u* f# N                .name = "user_led2",
+ Z( v/ ?. I1 e& x5 \: o
6 D& g( V- T8 P$ f! q8 E7 E5 S                .default_trigger = "default-on",
; G% ^1 l% |8 l- R3 r2 i: D
/ P& L4 Y% p  x5 |( J        },
1 [8 }$ Q- N4 F7 Z" I$ Q* o4 t
        {
' x, A( ]  g9 k" ~0 m  V) M. e9 H+ s: M% e" Q2 x" E; K
                .active_low = 0,+ h$ L! ^* b, Z% H( x0 p  \
# j- y! ~5 g  c" ]  K' h$ F8 _
                .gpio = DA850_USER_LED3,
6 y5 H% @# T8 R1 i  F; S1 ~& k4 w7 a5 ~  ?
                .name = "user_led3",* t4 U; G5 ^& J' i' S+ m: \

( q' _3 i. |; S. q" `) M  B3 X                .default_trigger = "default-on",6 t2 a( r6 a; i4 @) `
3 m! X# L3 I1 _8 B# i% m. }
        },
1 ?5 A# Q8 B, a9 a
- J( d. [0 V* M$ A        {8 L8 t8 ]: ]9 H/ \: G6 O; o  A

; m  l/ P( }6 ?! P7 B3 i                .active_low = 0,
2 |; v. [' |9 t% o+ u4 E
- N1 ?# b& A: K. D% W                .gpio = DA850_USER_LED4,
% `; o# m4 _' W7 x$ X2 i0 d! k
; l) G6 ^1 f  j2 D& F                .name = "user_led4",; y7 W/ C. g5 {- j0 {- ]
1 v/ H& P" [: @% c, E0 h5 x
                .default_trigger = "default-on",/ i1 p2 q* `0 P

( S* g5 `4 H# r. w8 W) L8 {        },
, P  V7 ]: V" k/ v% W1 r+ U4 z
( X' q6 D# U0 z0 j        {
+ z6 C5 u" Z, \% _+ p- A4 `( d+ ^- x
                .active_low = 0,
5 K0 }+ O8 }) p& L$ Z, W& q: K
$ X3 a" x& j8 R                .gpio = DA850_USER_LED5,
! w  D/ V2 R( x, |+ r9 V7 P2 K0 f, f3 G$ z6 |( z5 {
                .name = "user_led5",
  U% v- y% M5 @, ?4 k
0 \7 x4 L( f% n6 B                .default_trigger = "default-on",% z! o' C$ o- i- `* T0 K; f7 e: [5 }
0 H3 J' Z7 B* l- y
        },( I8 N" c. G$ C8 {' i/ \+ q

6 Y& R8 A" v3 J: u% A9 f, c) K* k; B};
5 {" i) l1 N& r8 H2 }# u& p2 V4 w. R

" l8 u' G* N9 x" T- J1 ?9 r! t* F2 x% p
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
( S; i  [5 N6 S4 P* u3 x  s7 H. D2 X/ r0 Q3 t7 i' _5 k
        .leds = da850_evm_tl_leds,1 E1 _) m8 F3 q$ L0 Z9 q

9 E9 o6 w; V/ r5 X0 H4 B: Y        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),+ K. _  I9 f6 u& D* t  {8 ?
1 {0 E( h7 n( t7 z: {  E) v
};1 u2 K0 h: H5 [; t0 Y/ u

+ f/ L* E" ]- d6 ~& J; ^) G6 C
% o. P6 ~# s* o% C1 z* H' P/ N9 ^9 [, h$ o1 m' g" |  E
static void led_dev_release(struct device *dev)3 d2 q) p+ S+ l% D# a
* I" I$ y  @9 j; j
{$ k+ C( i% U* Q5 c( |: U( L9 ^* `- L

, \! C1 b  ~- a; d% {4 ]- j};/ M4 }7 a/ ~* f7 N3 D

% Z% x+ S- i- q, l: j% S6 `3 |
( p2 b3 n8 G5 m0 V% K8 K3 L. F  y* C" \' b& s7 m
static struct platform_device da850_evm_tl_leds_device = {
' ]0 U9 v$ q3 U# p. ]% l% l/ W, Y+ _
        .name                = "leds-gpio",& P1 s, @3 R6 A+ A0 r8 f

4 i0 p! ^) a& f        .id                = 1,. o9 k3 w! R0 \$ w
0 ?4 ]+ [4 y* y; L4 Q: w
        .dev = {! O( z6 G% Y! M6 u

! |1 O& h- u0 y1 }/ r$ T# d                .platform_data = &da850_evm_tl_leds_pdata,
$ j  h0 g& @' J/ T( O- ?9 u9 V" z0 p
0 H) A+ g0 x) w. b                .release = led_dev_release,9 g8 s$ X3 D) ]2 I2 `! }

  d& }6 i  _; z( A! o        }
1 y, h& D; W1 ]( `# W/ |* U/ t: w( l! ~/ C$ Y" V
};
$ e/ U% E% e6 ^% Q
% c/ g- ?$ e; x& o  x! @# e7 R2 ^$ X0 G3 |# F

8 z, g: L) g9 \+ p  z$ j' d6 R6 mstatic int __init led_platform_init(void)
" I/ ^6 o% k0 F* q* y6 I2 S3 k
* r3 k+ _& x5 h8 W  ^{
% y$ G7 x% M. u6 G  c% q6 G; A! {" V* V" S1 [& x
        int ret;. M! [0 ]! U" G/ |
- ^; B5 n# D3 v6 p
#if 0& V, n5 f2 P. ^' X: j
5 T! _) `5 I, \/ n  f' C
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
+ V  d; {# x( g: b6 C
, }& G1 ^! @( A        if (ret)! K% v7 x6 e- ^; m# V- E
* Q, q) F  p( Z0 _+ i) L
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"8 N. v5 G% T# Q2 ]

7 J" H) V! N2 v: r% D                                "%d\n", ret);7 S3 ?/ w% K$ |4 A

# l. E8 v9 Q/ Y8 V/ k+ Z, y) H+ O#endif
5 `2 P2 j- l: ^! h0 J, G$ G- b, X- ?
        ret = platform_device_register(&da850_evm_tl_leds_device);7 M- q: Y9 Q+ v8 [9 k( U

7 w/ w3 L! N  E: S: b+ L$ X        if (ret)
1 ~1 ?* l( W3 u1 c6 |# c
7 j* ?3 L+ Q8 J( |; s# z6 Q; \                pr_warning("Could not register som GPIO expander LEDS");
: R. A* D# b! U8 W9 q0 x, Q& G6 Y# y0 E8 Z
        else# B( B# o* ^- K# o
0 R% ?* n0 C! B
                printk(KERN_INFO "LED register sucessful!\n");
) `2 W8 w8 R  u! M1 G" n* o2 W; b4 z
1 h9 Q: m3 t% g' j
& v; E, h" }, `" d$ W7 r
        return ret;$ |/ @( [! S6 H& n; z! T* e% e

& j  k, H8 X$ ^2 m+ y- w}
+ d+ x, M: {3 _0 _% U
% o+ f+ l% _& b5 s5 _) v2 O0 j6 h/ w& O9 S) }  D

7 \( M- ~: @  wstatic void __exit led_platform_exit(void)* V& ]3 X+ T' D  d- p! @

' ]! H6 O# r+ x& s% W/ A7 y{7 Y8 c% Y  q% X) U) ]6 ?
5 U  Z  U) Z, e% q$ C
        platform_device_unregister(&da850_evm_tl_leds_device);
' ~( f- g, L1 n4 n# x6 W& H3 |! L+ y4 O

6 T! o6 M: p" k& b8 p- v3 \
# D# F" ~! m) v        printk(KERN_INFO "LED unregister!\n");
3 f% F. p& b* a: {8 `0 l' A8 D4 t; U; A2 d  K( j0 o$ M& q7 \, D- z
}- p& W9 v+ Y) W' P5 o* Q3 l- z( v

" ?& h3 h* |& c  Z5 d# X2 _
4 X& |( t( y% F$ L8 [% s
3 U& L& b  _" U" o! X9 l3 }module_init(led_platform_init);) `/ `8 e: H! n  c
$ I0 ~6 Q; M4 S! _  w
module_exit(led_platform_exit);
6 X, ^+ c+ p6 N% ^6 s8 V. [# B1 `3 `
0 _# H$ `& O; D2 j% @

7 h) w) A7 b# ]4 z6 f1 ]7 M- YMODULE_DESCRIPTION("Led platform driver");
/ x3 g1 j' _/ ]( p/ s- e+ j: m: y8 g) }4 ?  m2 Y" R" w1 l
MODULE_AUTHOR("Tronlong");
( x, o7 H1 C! ^3 \: a+ w( T+ O2 R& O9 x' g) [; C$ D) q
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
7 ?3 {1 W9 q, Y  p) P9 B

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32" Y. E3 [+ \7 L8 z- ]
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。: E& N! B) Q7 b$ t
...
$ Z. k# ~2 V; l& D+ B
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
* j+ [/ a3 h) ?; 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-3 04:08 , Processed in 0.047681 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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