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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 : y8 l- X4 c$ m; }8 t
: f) j, V9 d3 D) X) m% o: b
请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的' u  W8 b& j- H( L8 j$ S
, e: G1 \1 _# U. k* G- Z: n4 @* l
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?6 m( F8 G' |+ y8 w9 q" q

) O/ w  x+ f8 [2 X, h

本帖子中包含更多资源

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

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' I- L5 s% V" J8 I% k% x# O
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
, |% O' e3 X7 Y) D, k% c
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:' T3 n- C. V; `, ]3 @- D
#include <linux/module.h>8 P& F& x  q+ K* ?
2 s  M) k: G% s" y! k
#include <linux/kernel.h>
0 h& ?) f3 G8 E/ r1 W5 b  l, |' k! N; u5 [: S2 o( b9 M0 X8 e# s
#include <linux/types.h>
1 \2 `5 i! O8 g) f5 k) z* V$ q9 k' X/ f7 a0 R9 t% h
#include <linux/gpio.h>
* z6 x" G6 w) ]! R
/ \- U; c/ J( a: A, Y- J$ R! g#include <linux/leds.h>
. _5 l5 L8 s& P7 x" _! _6 e. }( M  r5 ~( J8 d
#include <linux/platform_device.h>9 v% p) i* A2 _2 K! ]  F8 [  N

  K4 c" q6 Q8 T. y, G
5 u" J! \6 t6 n  ]  l  B
! p7 H- `* r9 U1 B2 K4 L  r+ @0 k- D#include <asm/mach-types.h>; k2 j( i9 Z: ~; ?2 R: g
+ g& d# x' O5 g" g
#include <asm/mach/arch.h>
" }# a$ S  G5 w9 j8 k! V1 {/ @) x  U; {3 h6 ?4 |* u
#include <mach/da8xx.h>4 d$ g2 c: D6 f  ]9 v' |. P
) s7 v$ M8 @1 H2 ?
#include <mach/mux.h>
2 J. R$ q: E9 s$ r2 f0 o% N. R* S9 R

$ j* ]9 V5 ~$ W* S$ Z& T7 n: o5 J* v/ |  z% C6 a
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)& p# W5 V4 x; k/ M" d# V6 ~
' }% t  u5 v9 f# I3 [: R6 v
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)+ o9 Q: X5 m+ q3 Q: H9 R, k4 d; C

+ P/ G5 o( l& c6 G' U, ^#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
& B7 [, j6 g8 X5 M' k) j3 D) \+ @  W6 O$ C! P; k! L
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)( S: ^0 A% r/ W7 T3 ?3 o9 ^; @: b! r

& K# G3 v/ o7 J2 H, S$ v7 x$ S#define DA850_USER_LED4 GPIO_TO_PIN(6,12)7 H0 H+ J, q/ b5 r
% w" q) r( e$ @
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)" b6 Y( m1 G) s) ~! ^; ^

0 ^8 v, q4 x& c) v/ C+ l4 U" R* Y8 X7 P7 Z4 `. J5 l/ _& H
" G0 ^/ D  B- a* ~. ^, F
/* assign the tl som board LED-GPIOs*/3 H2 U6 A5 F; R0 n6 R: G& I  s' |/ B

' R" I3 S( C! s9 ~static const short da850_evm_tl_user_led_pins[] = {
/ P; b+ g( M* o2 {0 V" f* G- Q! r2 Q9 D
        /* These pins are definition at <mach/mux.h> file */% y8 `3 m+ F$ o6 G# {
5 M. v3 d! V9 x1 c( V
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
9 Y& a( F1 ?( |4 s3 J
7 h/ U; Z2 r7 G3 W' g! B7 z        -1
, ]& n" E6 C0 x7 `; R4 A* Y( ?8 q" ~* y( H# U! i
};5 ?8 x0 f7 W1 f& \. Z2 d6 \
+ ~, `( k* [! F' h; h$ g
: b- x+ ?; O4 o: H
' j$ v) o( `. W( m: }
static struct gpio_led da850_evm_tl_leds[] = {
- n1 j6 z1 ^3 m* l! a' _1 G; [( D
5 U7 I* q2 m: G+ z( n' `$ K) E- v        {
& h! O3 O! g" y# A# Y2 ]$ R' O" k. ]1 |; y( z' o
                .active_low = 0,
% t% _$ T; ?3 ^2 v
' J! r6 ]4 }# A' |$ r: `7 h                .gpio = DA850_USER_LED0,: Y# I/ G3 O9 k6 z  M

7 N# s/ `; C% u$ w( W                .name = "user_led0",
4 K0 Z' ?' n7 R6 U7 ~0 |4 {' @/ D: k+ c5 Q
                .default_trigger = "default-on",0 @3 k+ N& `* L

0 v( }9 V1 O" z( [. X. Y        },
- `4 {& D) i# w0 c. B4 |) W& T$ j, _+ e$ a
        {, d$ b% v" _; m

; l8 k  x5 @4 |/ Z2 |: v) ?                .active_low = 0,6 V+ Z0 {. b* Q# r
; W- \$ y9 j0 \# Z- E7 v
                .gpio = DA850_USER_LED1,+ _$ {- {+ \9 p1 f
. \' P" s! ?4 }9 m. D/ ~
                .name = "user_led1",
' b. i& T7 c3 m
7 ?& c7 `2 B/ K, s                .default_trigger = "default-on",
9 w; I$ q& g  [7 y8 g. ~9 g. P$ K; {- ^
        },
* D- Y; G; F$ p$ W, k( }1 R; Z
" H. U4 v" k0 x( g  A0 k        {
2 L- f) Y8 G6 O
: F) L  Q) m% _                .active_low = 0,0 u( k7 C( @! s, P6 O1 K9 _

8 i# u5 i0 _' }3 \) N* [                .gpio = DA850_USER_LED2,
  J' c2 G, {: c  r0 C! x8 X5 J5 G; m; }* x7 Z( L) y
                .name = "user_led2",# v- ?, q* N% \" g& \

8 t! h6 {3 K* |                .default_trigger = "default-on",
0 N0 p* c' }# E/ n9 q+ i9 p. y  k! }; p) |7 @* j7 L: A' R
        },+ @: m& l" C: T" Q  q
8 L/ d/ A6 E- J9 S0 F
        {9 d$ d+ x7 G# s+ D# i8 _& ^$ y* f& H" U

; u0 t+ x9 O6 t                .active_low = 0,5 y2 N" t3 r% S: _  l
$ p6 L( T; i; u& Y! q) m
                .gpio = DA850_USER_LED3,( [/ i# U& z% [% b; V- z, x( @

7 D: t5 f/ F$ s6 L% g0 x8 Q, o) Z                .name = "user_led3",
; j" R9 X& r9 }9 W% b- p! w) K2 Q2 A' U7 V7 o! r! x
                .default_trigger = "default-on",
  U$ c$ I' B2 K: I% H+ u  u- B+ G; K9 p2 R  d$ s
        },' ]3 g+ |) a" K0 g
  ]+ f  v- v5 M5 @
        {
& Y  C2 S/ S/ b# _6 o4 U8 X
8 c* [! g- ?5 e* j9 I! W* F2 z+ x                .active_low = 0,
8 P  `0 X+ n" }+ Z: e$ H/ E# ]. _; Q6 v
                .gpio = DA850_USER_LED4,) W! L( U9 i8 s. @/ f3 _! a( u
+ e' T1 c! x- Z, A
                .name = "user_led4",
4 U7 f9 _6 Q/ L3 g; ~' g: D! M' U3 a/ z) x. `8 ]
                .default_trigger = "default-on",/ a( h! U. g: w: i

  k, v$ V. ^- _9 _# V        },
( A  i( {$ e( H" f# R
1 R9 i0 h) e' N% h( N1 Q2 Q0 t        {
/ _+ i, C$ e" l# P3 n& v7 ?' m5 \) g% @* e; M
                .active_low = 0,
3 Y' u6 a8 ^; P5 b
& }+ @, Q: n5 n                .gpio = DA850_USER_LED5,
' Z! _% a* J& d& l; V* k4 Q; M
. P  n0 r5 Y: ~                .name = "user_led5",6 u6 I( O( R+ |4 _
* l# t8 X6 D: _4 y3 m3 S2 Y
                .default_trigger = "default-on",
4 Z* h2 j. x9 s, O, K/ s, @4 F6 [8 E9 B/ [/ \/ }+ N- e$ `/ W
        },' P! |! a, B, \. [. [/ U
- k3 }! I" E2 H' D' M% \
};! `- I* x: W! j# p2 e

6 G' X5 E6 A  X. I
4 T+ V6 }* g# D7 Z+ ?' o# E4 U! m$ ~+ ?) T) h# q
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
; ^7 D2 o6 N. ~5 i9 _4 V4 s0 x  F4 F+ o, c6 [
        .leds = da850_evm_tl_leds,
3 b. B1 d( u" I
) z/ `4 A) y) s0 J! V        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
- e1 b' y& n6 r4 D8 X' z6 y9 [
- j0 a! m" u! x- X2 O. C4 ]( J};/ {5 N+ _; m% Y0 z

: t" j9 \4 W4 o$ x9 h
& }8 G5 f4 z) K4 ]5 t
4 a0 u5 r% R+ [- a. u  tstatic void led_dev_release(struct device *dev)
, ^+ t6 C4 V/ A0 O- U( t7 V
" t) q. I' c5 q- D! ]. Z4 h{0 N3 }9 K5 [8 r1 f

0 C  w4 D0 l& l( `* |, v};' r* q6 F- u6 U6 t4 a
( C' h$ B7 `! ~8 a; L
3 \  n. _% c6 V8 P& ^2 U

2 q" j3 ^2 Q4 }$ sstatic struct platform_device da850_evm_tl_leds_device = {/ `! S5 ~7 a8 Y

; _3 A. o+ K9 Q) T5 b/ M0 r3 v9 [        .name                = "leds-gpio",
: }/ H; E7 f: t6 \2 d
  Z  S+ X5 [+ [3 {3 o5 n+ i        .id                = 1,
& B4 H9 U/ M+ U1 o& f6 n4 w; K1 W8 w- R" A
        .dev = {$ u& v2 M' \& g! Z+ U  p
& W/ E( P/ P( a) g2 E' D
                .platform_data = &da850_evm_tl_leds_pdata,
9 Z$ i1 n9 }* `- E! i1 R) ~# e9 G# X3 z$ J8 k/ i: f
                .release = led_dev_release,
4 t7 j  o* Y' t4 b$ D: Q" k
) _' o6 U- b% h, `5 B        }
# |1 j& O& ~9 O1 h+ ~! Y* q  t1 h' R( I* Y
};3 S: `4 B* ^8 @

. C+ H9 S, a7 r& y! s% ~5 O+ i
& `6 B# L: L; v& M+ I, t" L4 t; q! L: \+ A5 l
static int __init led_platform_init(void), q* c# _9 O+ E
1 A/ j# f) W: U1 [3 ?+ v
{
! u# H- u% y3 {; a5 S6 r7 l
! u' q6 r3 J: P" w: C8 ]        int ret;
' U$ |0 z9 R! k9 x1 [) b/ b7 y3 P1 X! e( u+ {- _/ X  r3 C
#if 0: x" {* }3 ?! |2 W- S2 }

9 e  [! I2 v( L5 W3 Z0 t% m0 u; X2 N        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);  y+ L2 v. v. h* d7 i) ~

$ d9 k  d* Y* J. `# n$ r( g) Q' b        if (ret)
7 x7 a9 n- u) T0 V- R
( ~0 e2 E$ z3 B: Q" N  x" g& U                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
' k+ t( N! V4 M- n* y' X: [! I1 r* c; @( ^, N$ {1 S
                                "%d\n", ret);: x$ b$ K; l; b1 y1 x9 }
7 Q: M! `- V7 L
#endif
9 p# n5 e6 {6 R/ F9 T$ `& ^. v
- K6 f: {) m6 i! L        ret = platform_device_register(&da850_evm_tl_leds_device);
+ \5 s5 f9 }4 P1 _( D1 l
6 Y# O3 @3 o3 h) j/ n$ h3 |& ^4 z        if (ret)
' J/ k0 v: x2 T4 q5 q3 b7 d% T1 P4 _; j  o. _. ^! t
                pr_warning("Could not register som GPIO expander LEDS");- `; O2 f9 c# {& I& `
3 P" u4 N8 I8 V
        else/ d  K* G; ?) k6 F' _% N8 e

" h/ `2 Y# v: R' e                printk(KERN_INFO "LED register sucessful!\n");# r& P5 o; R$ Y8 B* B# ^: C
- ?" @/ d& A( r' I
0 O1 H5 r. R5 c( v
; q! z/ |' _+ {- z3 A, K) t
        return ret;
# P  P" ~- K9 p, K5 Z# E
9 T0 q7 S# w( `$ v4 p- I, K: ]+ T}% F: K" |/ R  L2 y

* m" U9 P: ^8 b/ T! }# m+ t# T$ r. ?5 Z) v( A
# f% X" _7 f! B2 [8 w0 @6 c' v
static void __exit led_platform_exit(void)' i  J$ A$ X7 @2 D
! }0 U: D8 }7 O( V
{
( l7 O6 @1 X3 I) L% v+ J4 P" E5 M2 L
/ X/ \: V% m3 m. r. k6 X        platform_device_unregister(&da850_evm_tl_leds_device);4 D. {5 r+ U, l9 O

6 U5 i: E' c# O5 k, t" h1 ^2 p
/ |, @2 w$ e( J' {
        printk(KERN_INFO "LED unregister!\n");0 e& W1 X. p3 z; R2 i% l

9 l* ^% P' d9 }: Z4 f}9 i/ ~6 I2 i$ s( Q" y

% @" |/ g: {5 M+ j; k: F  X
" j8 J- F+ |' x# w2 m2 b9 n
4 B& i$ ~, A: Kmodule_init(led_platform_init);" e0 _+ b/ i; B' M% v. S
8 D; j4 s; |( o! f& Y& `, c
module_exit(led_platform_exit);
: t/ d: @0 w& U' m! m4 f( a( m

5 ]( |6 }3 D! @% u8 h1 z# S
0 @5 r& t0 I- P- Q; R! m+ nMODULE_DESCRIPTION("Led platform driver");
/ m2 M7 ]- {0 H% T% ]# p( J: r
5 {: r! i' E& ^- o  A8 ZMODULE_AUTHOR("Tronlong");
7 k" T3 |: E* e% L: R$ Z! U/ p. @' t7 L; E9 r
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
" H- L, A0 H" h1 w, G

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
4 H2 B) n- a# }& X2 s1 S9 [: |; N5 b$ X您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
) \1 G7 w3 `/ g& [, v2 ] ...
* W7 D! b% A4 C
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。$ |3 F4 w: ?* g; _
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, 2024-5-20 09:12 , Processed in 0.044316 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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