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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑
% B/ K- M; z+ L' H
; m$ i! J% o) E( t0 w! p6 c请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的5 s2 Q4 l+ Q4 E& L9 X, o
  P5 N3 q; \* X; q0 P% O! t0 y' b
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?
. Y# w) _6 A) E2 g
# B% d" |. ~6 _; E, o& {

本帖子中包含更多资源

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

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:141 U( F( N0 @7 i$ C( A0 h0 w( y1 V
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
8 c9 ~. g( ?  M) O4 U
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
, t/ w% e( x1 F/ @#include <linux/module.h>
6 o, X5 u  W$ G4 V# ]  b' y, `- d# }4 D
#include <linux/kernel.h>
  m: T7 B) A5 q1 W( j
( {$ B6 a$ V# {/ a$ S4 f#include <linux/types.h>
( y$ T  @% p$ G: p3 a* G& Y5 X5 r* s2 Q0 O; E! C
#include <linux/gpio.h>/ n) E( f: h4 v* E4 a
. X9 T( H4 @( y7 e
#include <linux/leds.h>% u7 G7 b+ o( z
% o* N4 Q$ K* d0 N0 D; D) d# M
#include <linux/platform_device.h>: E( v5 U$ X: U3 o# I( t

( q. J2 r2 f4 [2 o6 I6 V( {
* L: k% Z, G7 T3 c  d8 M* u% ~5 Q; t" r, r+ y8 Q) {8 W  Y9 Y
#include <asm/mach-types.h>
4 w. q$ T9 E  @  X, b" |) q5 G+ R+ H' `. s3 Y, y0 F( C7 O/ D
#include <asm/mach/arch.h>4 b6 i& K# l# Q" W' G

  |1 ~/ Z9 Q1 N7 p' z7 h: j' M1 }#include <mach/da8xx.h>
3 @1 M9 o- R9 f; ~6 l4 K# K0 j* z. I& o$ ]
#include <mach/mux.h>
) G) s9 {5 {6 c) |0 R1 O
  r: Y# k7 a8 D% z( }4 z
# G. v9 M" H4 C6 T6 a2 h2 J: y: s
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0), Q" S/ x! o: ~$ \; j

, d1 s$ f" y: Z% D! F. K$ }#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)* {: P8 _* v5 Y4 A7 ~

; b5 T  {, x1 `& i1 {#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
$ |* b1 ]+ z8 h+ x7 Z  c% J
& x3 q2 i, c1 F1 [8 t#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)# ]1 V: A; z* v  A9 S8 `- b
6 p* [1 x+ ]7 d, b/ P) a
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)
( N4 ~% {+ y& f4 @# t1 ?6 G9 R+ W* V( _* @) q/ Z8 n$ i$ X6 j, q
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)4 U' B% k, f" N/ r- r0 a5 _' H5 ~

0 n7 E% U4 a+ N1 A0 E5 Z# E) w, G% x' z3 D
8 ~& q! k  F. {. {! {" X% w* B
/* assign the tl som board LED-GPIOs*/3 H& K. I& Q9 \; k: e5 g

4 g! P8 w# S( K0 Estatic const short da850_evm_tl_user_led_pins[] = {
" e1 L$ o, H) K3 h+ n
. }1 Y5 D5 v! J/ u2 A; Z        /* These pins are definition at <mach/mux.h> file */
" K5 z4 V/ _4 N) x1 @" `3 t+ ?/ i+ Z9 ^
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
/ J; c# f( Z8 k
, C4 C) I& l2 J  U+ r        -1
- j, A8 g  C& S
$ J8 F* @) H; h$ @  l};( v  W. L6 f: O# i! H

7 G6 ]8 B) B7 R8 M$ }. D! i; m
0 D2 d4 g2 x4 e3 z4 c
2 ?2 d4 x$ ]' Q& d' {/ nstatic struct gpio_led da850_evm_tl_leds[] = {" ]7 O1 `& |" m0 S

- b0 y  U8 g4 o) h6 M        {& |2 @" ]" t: Y* C) K! Z2 ~
1 S. E: G% c% J5 E
                .active_low = 0,, @3 s! n3 f. O, ]* h5 y& _0 q
8 F' B( }' K( u$ O4 ], O
                .gpio = DA850_USER_LED0,+ E3 E/ N  v* O
. j) c6 g) W7 C9 d: G8 c& U! h; a
                .name = "user_led0",
* C4 g6 e# a3 A$ S
, ^! e; L9 a8 t                .default_trigger = "default-on",
: \7 [7 V: V; a5 Q8 r  N0 d( O' {- i$ {- z
        },# M9 o6 Y" [& |5 d5 ^) c1 n, w( @- H
( R, n, n( r6 T: b  e
        {
. \' F( X) i( a
) [. s" [# D/ c! n: X                .active_low = 0,) l; _" z$ @' d& r. \" @' A

3 f" G: _3 v: d% h) H                .gpio = DA850_USER_LED1,
: n$ {+ ^9 J5 p! w6 T, b3 s8 {" r- h& T, O8 ~" ?& W
                .name = "user_led1",
# \+ P# e9 y$ g, G4 b  T6 M+ z
1 ]; k. ]4 u) M2 f5 u7 ~4 d* g                .default_trigger = "default-on",
7 s1 B: |5 E. s# Q& I2 o2 O  n* x( A. a0 Q# ~+ D  c
        },
& q5 H" D" g4 q( E( a7 e: P( J; Z& U9 F/ |
        {/ n7 F- r0 a; n% \  {- Z

6 R( L% q& N% G: W& z                .active_low = 0,
7 [+ B5 ?" i; ]' ]& H4 Z
& v% G9 h2 q1 o; t5 E2 C7 Z4 {, y                .gpio = DA850_USER_LED2,5 s, T# C0 e* x9 e

8 ^8 k+ P, H, u' h% C+ l                .name = "user_led2",: D3 B( n$ z; e% t2 f3 Y
$ I. k: @7 A& L9 a
                .default_trigger = "default-on",4 ]# X6 m' j' N# R
" C: f' I( v# i  s/ ]" ]
        },
" F( G! V! H2 |; i6 h: S9 p" v# f, b! T$ f$ J  R( e
        {
0 T, g# e% t+ g+ @3 x6 j, I/ |
; B! q" }6 l0 `& u0 ^2 f                .active_low = 0,& a; Y; L8 r4 |" l) E1 N" ~- `
- Z, ~8 l0 k. U8 `* Q* `2 E
                .gpio = DA850_USER_LED3,. y) r  [! x0 a. T  k
# r3 p2 E* I. V& O
                .name = "user_led3",
8 m  F5 e4 X4 ~( H1 y
1 z- x  H; w' N1 S2 L% k* P                .default_trigger = "default-on",
  |3 ^8 x) j! o4 f. O+ d5 L+ @; R! K7 D( c" o0 q
        }," H5 j2 t! d; \4 f5 ]7 h: @2 ]

# K3 d' d) D' `( ^1 K        {( s  R7 ^* w9 ~

. y; o/ E4 \: u2 W                .active_low = 0,
8 t9 }2 c% X- z& ]$ \* z
# N5 [5 g" O! i' m4 a' k& B# e                .gpio = DA850_USER_LED4,1 Q5 O5 \3 _* G

" g+ {9 R' Z, Q7 \2 m" t* |3 L                .name = "user_led4",8 t* [, ~0 [% R* `2 [( I; d/ t
) R  \( u$ |1 D  P
                .default_trigger = "default-on",
+ B! K5 w' z' r% `! S" B+ T' \' c+ Z5 Z8 A* _% {
        },* D' v$ L! A4 ?5 o/ \5 n0 c
: b6 n4 o- o/ G8 l. |" m
        {6 p6 q- L" K" O  E1 Y* }
1 s* ~" f$ V2 g; F, G; g* [3 A
                .active_low = 0,
6 J# G. y: r2 ?: l* D; o7 S
8 S9 U( a# r% D+ z  p7 e1 k# l                .gpio = DA850_USER_LED5,
: n8 p5 j) w: {# ?& l% e
( |& S$ Q+ l( ~/ _                .name = "user_led5",
5 L- |) n7 U7 M& x. f7 d* \4 o8 N4 @8 L
                .default_trigger = "default-on",
1 h% K  D) D7 v' Y: ?
6 ?; Z2 P6 b6 G6 [$ ?) f, W        },# [, D0 V( f1 a) p/ Y0 C
) z  @+ t" g3 N5 D3 O; Q' c
};
' w5 n4 u1 a2 E" A: |; }5 x, C1 E
0 T/ S, H8 q. S
7 K' q0 X. E# D% p4 l3 S0 i: t, j/ K  F
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
3 l' B6 w. y# b$ a+ \
  R) |6 L1 X% g$ T& D, R        .leds = da850_evm_tl_leds,
8 `! M% G# t( H: Q* a( D% |5 K4 }" j; M* B
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
" I, E( g1 f* F$ |- b! `
, G: Y  V2 q4 N: k};
; Q, Q1 B+ i; r0 D. d
5 x2 R/ [, Y& {0 Y9 K4 j( D% n4 h, V, |2 j# G

6 _* N6 ?/ k; @" ]: s0 F: jstatic void led_dev_release(struct device *dev)
1 E( v  ^' Q" r6 [  j% {* T7 L! P3 v5 X# `4 o
{5 m' Z& t& a1 ?. T# V, m

3 Y. i" \1 v- |0 W; |' v, K};
, m" v/ q6 K) Q2 T2 \
# u1 Z8 B, W, q6 B8 Z+ t
3 b* {7 F! I' c) x, p+ S  x2 l% L- D7 A3 G6 V! K& m8 P  `
static struct platform_device da850_evm_tl_leds_device = {; ~1 X) i9 `) L& ?& t0 k0 {1 V9 f' K

. W" f5 h, l) g# _1 k/ [& d        .name                = "leds-gpio",2 g9 Z8 \+ V- ^+ v$ i
+ N! c4 e: _* c6 p$ l7 ^  o
        .id                = 1,
. @' d7 b2 k$ k8 z5 g
" s+ j: d  Y$ ]3 c$ B+ K$ C        .dev = {
) W' D; v3 [; v  _* v# s+ c4 {) v: n7 O7 K/ ?
                .platform_data = &da850_evm_tl_leds_pdata,# I! b7 y% p8 ?6 `( C; B" L& M
3 A2 d" E0 R/ S
                .release = led_dev_release,0 v( r5 w/ _6 v& ]) {0 J3 W
% i: {1 `- E3 R& {
        }; j" m4 V1 A- G4 m8 W; q0 ^6 d

  o+ r3 V# H5 W7 i4 M8 r# l};
3 M  l& I7 ~% M/ X7 s! t# N& _- F( G! z
: |5 F9 A/ W" ]  u. R/ X" ^, p: W; e
8 y/ h6 g1 E: {$ w/ I0 |7 g
static int __init led_platform_init(void)% }% o  y! S6 Q
9 o. q+ H; s* G2 c4 t
{
- f" ?9 b4 T4 j2 S  A7 t) V! v2 h! ?' Y) m$ P$ n
        int ret;
$ a4 ~% Q- m7 D$ F
7 F  D5 j: j% [3 Q- g# A#if 0+ l7 I# k  S' l3 [! l- k7 p+ v

$ K  H" s" `3 ?7 S& v6 I        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
0 E9 ?/ i5 ^/ x' G/ O7 d- g6 z$ V; o0 G0 e8 w
        if (ret)/ U* K- @# s, n5 v

* ?' B$ N9 J9 c# w8 A                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"# n, L+ V1 ^- v% k1 U- G, s. N
# R# J7 N: H+ ]/ O/ W
                                "%d\n", ret);
0 Q, K- C7 f  {# l8 {* a+ z) ^: G4 X$ {$ m$ i. c. z
#endif
) @2 Q* w6 b( n/ K8 s* y# i: |2 q2 l& e: `8 k
        ret = platform_device_register(&da850_evm_tl_leds_device);* @! \1 g, A9 d3 g. O
* ?3 e: w2 a6 N$ V. j: K4 L* A
        if (ret)* B$ c2 X: _$ {
# {' ~* x7 ?$ E7 D. @5 B
                pr_warning("Could not register som GPIO expander LEDS");6 Y) u. F5 k2 v+ E; g3 X* V4 N
; K" X4 ~% Z! @0 r( E* A
        else
, u; z0 a# V5 n: N) b
7 d9 u6 g( P* U" `                printk(KERN_INFO "LED register sucessful!\n");! B; {. }4 H$ p% I6 c3 L# D7 v
7 }- f; G% S8 Q) w  }: G
9 P9 T6 y, v! d4 Y, v4 t
7 |9 ?$ x" t! M' o& b; a
        return ret;8 I) R5 K- g' P$ G

) g1 l* ^) G" s6 r0 A1 v- ]* e- r$ t}
7 _/ L" y3 ?5 o' h, ~
, Y5 C0 j  B4 I* L; V! ]7 b4 ]. u/ H3 l. _' Q- W

% h$ v  v8 z$ Q, E7 y2 j) Sstatic void __exit led_platform_exit(void), }2 B; D+ R1 c+ n
+ [( U& y* y6 e& D+ w0 _( t
{8 o9 _) T% e" U6 u5 s, W

7 z: u* M1 c7 n" [7 b7 _1 s        platform_device_unregister(&da850_evm_tl_leds_device);9 m( `8 F; j, m. x6 f/ C1 F

/ i! \, L4 _& [4 C! b) N3 l2 d8 Z' Y. V2 U  r2 x5 Y3 p/ ]6 U
4 H3 i! g, L8 ]/ r! p9 i
        printk(KERN_INFO "LED unregister!\n");
9 @- b2 s- E  ?& E$ L! Z" T7 b
; u- @. y3 h9 G+ T}: n. j& p# K* B) W* z

7 b7 s. P( G" c* E
+ q8 f1 u+ ]$ s7 k" ?% h& K- i- a  @( s, Z, S6 o! ?1 D& Q
module_init(led_platform_init);
8 A- {. H& }# E( ~+ [, X0 z( \# q1 @/ O% K% \5 M
module_exit(led_platform_exit);; ]. v" f- c9 {+ w/ n

4 i& U  I$ O" D, Y2 F1 K6 V! k3 j( D6 Y! H- Q; P
$ K! l8 J& M7 g6 p# D
MODULE_DESCRIPTION("Led platform driver");! \8 r; E$ @) z7 ^7 d- {
9 |1 T# K0 S- {% q9 {. y
MODULE_AUTHOR("Tronlong");
/ r: ?6 b* Q+ b8 J
$ g% U5 g0 g4 y5 `MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。# H* Q/ R- [0 i3 ~* }/ C

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
5 y5 ]- r% i8 x您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
! X) p1 b% D' C ...

5 u. k' r( }( i7 h好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
1 J4 O6 g; G- g, ~+ g7 q1 shttp://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-18 09:13 , Processed in 0.044395 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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