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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 & p) h. U# P2 ^2 N

3 \, T8 o# a0 r' ^3 m请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的: J: M: [6 f+ D% I8 X+ [0 _1 k

+ Z9 A3 y/ d, A% y之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?) j4 {6 [; s$ ]4 B0 q

' M' T, G  @9 P9 S0 L. S1 o

本帖子中包含更多资源

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

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 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
5 T! F1 m" u0 ^. M6 o  Vhttp://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; u. y1 k! M' Z& ~/ X$ j
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
  Q3 W  k5 w8 b9 G+ o5 {0 ^7 \: M ...

( U( F( \2 I5 u9 A) x6 D好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
' B+ _0 u/ w* E/ g5 K6 ]3 b

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
板凳
 楼主| 发表于 2018-12-14 17:29:27 | 只看该作者
广州创龙莫工 发表于 2018-12-14 17:14
6 `3 X8 P! z- q4 K; flinux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

4 |$ j% [" f' Q8 R% g2 R5 P' B3 S我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:) \/ M/ w2 F9 n) h/ Y( w. S
#include <linux/module.h>3 Z% d- g& l3 L

3 ^2 E; q0 N% ]+ s#include <linux/kernel.h>' x: h0 R" W4 V# S8 {6 P5 O  S0 l
8 c- A' Z3 s, G4 X: Y. y) o
#include <linux/types.h>2 {9 ?( t0 ?" q2 o$ Y5 h
0 ~2 z6 w3 P1 S5 Q0 C5 p0 N" F2 E
#include <linux/gpio.h>
" k: A7 e: L1 I0 W5 f  w3 V; d' b4 o. {' n& t( {/ ^
#include <linux/leds.h>
4 h) H0 L% j# U# m- R! M
' X' ?5 M1 L# y. u  V#include <linux/platform_device.h>7 i+ x7 Y' c6 E1 W3 R! v$ i
3 O- z. f8 n, v
7 W4 d& B( t2 C5 C8 u: B8 x6 G' [0 X
) \8 @+ R8 c) i8 n# R
#include <asm/mach-types.h>, F( R2 E% @' V
% E; o5 p) C. c' S6 W
#include <asm/mach/arch.h>
3 o- P6 W- s- p  B& c7 G: M. i
# C: ~* j: v- w0 r# Z- X6 f#include <mach/da8xx.h>5 ?$ d8 b0 \2 y; F' j$ B" x% p

, X! F' j  R4 o#include <mach/mux.h>
" W; J: L  m% j5 j  S# u0 o$ d3 K$ P' J1 J* p" b% S. \" \

: v! i7 Z9 E  M1 d! q! u" c# z+ i+ ^/ Y0 L
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
3 e; h+ V( G; w  S3 k/ S) p! Q3 f
  a) h( f" n) U8 u#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
+ C5 R3 x3 a5 }8 e" _) Q. |! A% z% k8 v
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)" j3 K; a4 E: ]: @- x4 v

5 X# N. r% Z: W: H8 n2 _#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)% x4 d; |* l+ t+ b
/ w& a" u4 i0 M5 F9 p) k
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)' q( w. J! `; O1 X$ K( K
: Q6 E% k* r( L: D+ ^
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
8 L2 ~: a$ J. n% U$ i* @% W: y: b/ k2 l% ~! D
2 x* ^! N, v* q2 f/ R% s( o
. Z8 L2 H" t' Y( G4 Z* S8 O7 r: T
/* assign the tl som board LED-GPIOs*/
4 e! V& P" c, _; R  }8 ?' L' ?
% y4 C4 X$ j# z5 G0 ?static const short da850_evm_tl_user_led_pins[] = {9 n4 @  ^1 K3 W1 M! x

' s6 Q, X, N4 M+ h        /* These pins are definition at <mach/mux.h> file */
* \" A/ y" ]- B1 L+ I1 _4 R
# q) b/ {0 @* f) d, l- O        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
) C, Z: |1 v, D: B5 j( F0 ]
3 X' z* B! {) s: F& D& Y        -1. B$ u- i( ^/ ]- M3 ^! O

. p- V/ e+ C) C};) O2 V7 {: }: |& V

. u9 s5 L0 r0 [. j7 C. T% t5 u& }4 q3 @5 R8 O& @9 X& q

/ V5 F, R& J' [* X) H6 f+ d$ estatic struct gpio_led da850_evm_tl_leds[] = {
% L1 o  u& y+ b" D2 H8 e' O
$ c: b  m1 ^$ z1 O0 Y) L0 V) i        {% J9 ^4 N9 x# A
3 p& {* A/ H' s* H( P
                .active_low = 0,
$ d' S& ~) p9 i, Z: U* a+ J" z# n! U% v7 I& |# R8 R4 }
                .gpio = DA850_USER_LED0,
# a# u, k1 ]6 X% J' j
/ a  B9 l# T8 w. y( T6 J                .name = "user_led0",
2 Q1 M: T5 ^" H2 D0 d$ u' r+ W4 P7 h: v
                .default_trigger = "default-on",6 p% N( p5 i. ^* K+ r: R

( j7 j) Z8 ]. Z: i- M! [        },; V. P7 q9 ^6 S" E

$ S0 q* E- u' U        {
+ G6 e$ u! Y& B8 [" W/ l9 d% Y: F! [+ k% U: V
                .active_low = 0,
4 }" L% Y6 W" E8 F6 X/ U
, j/ n5 r% N1 P" r8 Q                .gpio = DA850_USER_LED1,9 l8 {& n- r% s
+ y9 Z* b: d) L4 A7 o
                .name = "user_led1",6 Q3 G" r9 n; |( R% E' T
+ r; `+ D: V1 ^# R, @  i# v& c
                .default_trigger = "default-on",6 Q) d8 W& F& I  D2 T) u
# t1 R8 c8 M9 t( i* ^
        },! _$ S/ w) K1 b1 l+ I# T' K

& U0 @# u# _1 Y" j5 O2 B( z        {
9 n4 x( N% b4 J* v' G  o( M3 L! e6 g# G
                .active_low = 0,
3 g7 |1 b; ~6 X1 F) o
. K9 P6 t* Z  r) d& I                .gpio = DA850_USER_LED2,1 |9 t7 H: j8 w  Y6 Y9 V( J

. N! {- N; w0 @5 P                .name = "user_led2",
1 l- k3 _9 \, v0 P  ?) J( T: D% J
: R1 l* S/ p' W( n                .default_trigger = "default-on",
' o- |* _0 O( [+ p7 E) P/ w6 w
& L% A3 Z/ u! F/ C8 o$ S9 u) W; y        },
  d- w6 e0 ~0 u0 _. |$ q9 I* x/ {8 P. H9 [3 X% F% ^8 z
        {
" |! P( y, y4 w  x' d) K* |/ a6 m6 y- D4 k. `" k3 i
                .active_low = 0,
* ], w8 C2 q8 @5 c. h7 |2 _2 o0 G3 C7 B) ^
                .gpio = DA850_USER_LED3,0 x& B7 W8 N5 R: m2 d! e. f$ b

$ h; p7 R+ T) W7 V! F2 V/ o/ x                .name = "user_led3",
0 r! A/ b  V; [) @5 F& z  U" G2 N& K0 o" V6 R
                .default_trigger = "default-on",
1 @2 p# b5 D% i1 z$ e/ F! n* O. c# |4 `3 V, {9 E. O4 N; w
        },; [7 C  @+ k% D* |& D

5 n# w* e% m+ a& ~4 P        {
2 p6 `$ j) M6 I/ z9 w3 E6 H8 l$ i5 S* R$ R
                .active_low = 0,# k! Y  h9 S2 }! M( B2 j3 w
, N' w( \: V: r
                .gpio = DA850_USER_LED4,
0 ~  b9 E7 T. S) j6 q; Y( z5 z8 Q8 m) v" v. p1 z3 f' v
                .name = "user_led4",
# Z5 e' J8 |' k$ q& R0 E; h5 y# f; s( T
                .default_trigger = "default-on",% o' p0 T( ~4 i" a5 T
( S; z2 L+ ^' P
        },
& g; A1 Y( t/ `0 ^; A& M. r$ \: p
        {
' c7 D+ ]# P9 P. d- k0 h7 F
$ w8 d; v6 ]) N) ^# E) X                .active_low = 0,
7 D$ N7 A' @: \4 b- A3 C, _5 n+ F3 N+ E1 H" ~% t( R/ ^
                .gpio = DA850_USER_LED5,/ \& ]# C- k. p; y

- R& `1 ?7 ^$ c                .name = "user_led5",
3 r1 o& ~+ j5 t* c5 B# @) i7 k' W  |) Y1 R
                .default_trigger = "default-on",8 s. C6 W& s& q6 T' E9 P  W$ t+ }

! l, ?) n9 r( M4 Q5 d7 w! X        },
1 C) C* j. D$ [  C- F4 y& ]) T6 `" E  N& }2 R
};- K# T/ U$ q$ Q; D* Z
0 e* Q* {7 O3 D9 m: l9 ~1 k4 a/ x: M' e

9 O3 P+ J" L/ B/ i9 \6 B. k  q3 p/ T( m7 c& r
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {# V7 a2 }" ^& T% M( V& F, f
5 n3 j- J! O" ]6 U9 C# Q+ L
        .leds = da850_evm_tl_leds,
! o9 X  q) K& f3 B# V: b. L+ `* t- H6 O" w; N3 q
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds)," q; _" x+ b/ a4 O5 ~% V

/ M2 w  O0 e: f  C0 M* O};
/ }0 Y- p3 o7 Q8 f8 ?+ |9 c7 d: p. a3 P5 Q& M- |0 }( h
$ F! h9 p. }  h+ t

- R9 R& @& k( q9 F  `. @7 k- ustatic void led_dev_release(struct device *dev)9 b+ |  p# l1 D% C( a

1 e' p2 h+ X) ]# D/ u/ ]{; u/ _' D- W8 f( }% }1 V
* Z6 F3 M/ `7 p' j' M: R
};
  v; J+ W3 @# q7 _/ M8 _
$ p) N2 D% s  W, ]! I0 u
* `9 h; E4 ?# ^$ X+ {! d+ J" n/ Q0 x! b
static struct platform_device da850_evm_tl_leds_device = {( l) K  [0 q* b' k

4 u4 _$ @# V" M        .name                = "leds-gpio",
/ X/ X. {  s' Y5 T! y6 S9 o1 R
0 X3 ^7 U" @* k7 [        .id                = 1,8 R% T4 a# I5 F+ V, e; ^) m
$ W: a4 \" g. @) W- f/ h: b4 Q5 k
        .dev = {4 g; g0 {* k5 i. o

& f0 D: |" t' \. U                .platform_data = &da850_evm_tl_leds_pdata,
$ p+ x7 ^; ?$ d/ m0 w3 u8 N  J: \! x# d7 W6 R
                .release = led_dev_release,
  W  M) n, r! s- `8 ~, x' m# C# F6 {; v
3 N8 K) a  {: F0 H0 }( z- H        }; d2 v* \+ v- N, v/ S# ^0 H

5 V0 g8 p, G2 h' f- W5 {9 C2 b. y8 Q};$ q0 y& _: F) q1 g/ I7 ~* n9 H8 ]; K
8 m4 T) {! F4 P  z( W" T
- Y% ~+ ?; Z, F% x0 L8 Y$ ~! W
3 ^7 v0 E$ \$ T* U
static int __init led_platform_init(void)8 L. P& k; J; k
9 O/ [' e0 _+ Z2 `5 x  J
{5 X' G! J, W) }, {! }6 i

# n! {3 K4 \' t% p3 Y' O+ O' Y        int ret;
0 }3 b2 C: D+ P1 ]: B% _8 L* r$ b5 o( X$ v
#if 0; y+ ]  _+ S$ k1 h$ D% v  E% ]
3 E6 Y5 M0 \+ a2 [! c
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);2 i! j/ ]& Y2 o: _5 f# j, r( G. r; E: b

* @6 b0 q4 C6 w8 N        if (ret)
  {2 u6 @' n" q/ H) U6 |; B
3 C* E$ e" Y" L$ S" I9 ]) F2 h" z                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
5 Y4 y' i- p: B* H7 F9 q8 c+ @4 P$ G- @8 r
                                "%d\n", ret);
, ?& w/ Y" L* k* q0 A
6 h% C3 q5 M3 Q; W$ M9 U#endif
  b+ }. f6 Y6 h; g6 f3 w. T* P9 d& X6 N9 ?* h
        ret = platform_device_register(&da850_evm_tl_leds_device);
4 D/ Z8 N- j" O; |- ~  @' t* g6 ~- J3 C" Q9 @
        if (ret)
1 P6 j- Y( {  T
+ n# }* n: h/ `& ]! e9 \                pr_warning("Could not register som GPIO expander LEDS");
  Y, \( ~# Z# G& k
; h3 N) B# D8 j0 o. m* R' V0 v        else0 l! T0 E% w  i- G" k2 M; y& k

3 ~2 b* I& q) b1 \% k. S" h                printk(KERN_INFO "LED register sucessful!\n");
* S" I; l3 u( u: K! }. F1 S( J% h& Z/ ?/ Y
0 g2 Z' z+ o# n2 l# _/ Y2 f4 I
, H! b  q! ^1 N2 B1 z
        return ret;3 Z& G; J: O1 k( b1 y: e3 N

9 B1 ]6 z2 f7 G! e; @% w% t& D}4 J& p* a% K/ f5 u1 ?. S: z

( |3 d# s& b% o5 D% Y. y& H  o1 ^2 P% q% U
) n3 y' n" C& o: g0 B9 R
static void __exit led_platform_exit(void)* S" d7 b! t1 V3 c$ l7 i' ~

0 p, B! t  @- ]0 Q' e{4 e- m, J0 v# g! L+ p: t
8 `0 m' L* q0 ~
        platform_device_unregister(&da850_evm_tl_leds_device);
: Y1 \# p/ ]+ t% q- o
- k. B! ~; M9 w' b' {0 p( q! C1 k/ |  F2 V$ l

. D* x& {' n: L' H, R        printk(KERN_INFO "LED unregister!\n");3 {* L' R% W% l5 _- j

) R/ [' [0 ?8 ]$ z& x}, T/ Y" G* l& h* o* F1 j% X

/ ], c8 ?: N2 o# s4 Q5 a, J. `8 b9 s. o3 b. L
" H) `8 ]. X; F4 k! {- C
module_init(led_platform_init);
7 X8 K' y. y7 R& {
8 S9 }( `! s: x$ }$ N0 smodule_exit(led_platform_exit);  u9 D- j8 e3 ~* U' @# Y3 d6 g" i
& u: k) N' v0 P) @
1 D) j6 q+ `# O- W# r5 T) S9 \5 g

3 B& P, M3 p( x- H2 AMODULE_DESCRIPTION("Led platform driver");
- R8 S  \: ~- r7 T1 I/ G. C
5 U3 p. Y# k* r5 V6 x/ S8 l2 }! kMODULE_AUTHOR("Tronlong");
2 M. b5 ?1 l+ Z! J, K. D
! L0 B! Q' J/ D; V2 X$ uMODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-8 16:09 , Processed in 0.045642 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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