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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 * m4 ?, F- r4 \2 N7 `( {

, b9 @& Q8 _6 A* L& Q9 Y请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的  K5 e) W4 k5 [8 ]
7 X; i; u8 O1 h3 H5 G2 d
之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?; E9 x, J  J9 Z- u
& V3 m4 O2 m" g1 d

本帖子中包含更多资源

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

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! ?& h6 u' m/ k: S
linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...
% U4 M3 ^+ _" j- L* c1 b0 N
我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
# @! h8 s# J4 Z* q* P; d#include <linux/module.h>* n  y1 L7 s+ j
2 J, r! S/ z# F8 B- `/ q1 t
#include <linux/kernel.h>
, P7 z" ]2 m2 z' E: m6 C4 p0 q5 g$ x6 T/ I
#include <linux/types.h>; ]$ b; |' [! k" i: @, P7 B
1 }0 j. {1 g$ R. k: ^0 Q7 \
#include <linux/gpio.h>& T8 F( t, d; v
7 y1 ~6 c3 u6 j1 \+ v, X3 p5 c
#include <linux/leds.h># P+ w  m) t  x. q* m
" o1 v9 j, Q8 E9 {
#include <linux/platform_device.h>9 g, |( a5 }& q( b, Z- j

0 o+ C% X6 x& |( n' @" x; _( @4 ?+ R" M( p4 i0 E8 F+ I; Q
4 [1 I  ^8 {3 I
#include <asm/mach-types.h>
% u& j# Q- z7 _/ K: X3 t+ w6 _0 o3 f0 i3 L) {9 g
#include <asm/mach/arch.h>6 ?" |: D+ y; W6 O  l) q1 r  N

  x% x, j7 o! s8 c#include <mach/da8xx.h>
) p6 v" E; T; w. Y7 }; B) I9 Q" F* n
#include <mach/mux.h>
0 d6 a% g: k4 y) d, z/ P- ^8 _7 Q5 Q/ q% M+ o+ P5 S" S
" s. u( K6 N( ^0 {, z1 R2 J! Y

1 j2 T- s" Y& e2 `: ~) f- a#define DA850_USER_LED0        GPIO_TO_PIN(0, 0). s; ?; q( \) F4 _
/ G8 B- W) U: y/ J4 e6 L. R
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
  d1 s8 a9 g! S+ Y* O$ @9 ]7 \8 \% f0 Q/ ?' p
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)9 r% r& _. g; c3 b
4 a7 B( S/ }0 z% k9 H
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
8 g2 [( v, u2 T2 n% q. n+ p0 e/ s  r  u. K- i2 M
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)
: j9 {, L# n6 Q) I5 f( h; r! W- d  M' z  l3 ~& I0 h" a
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
) M4 X  z/ j# W5 G) Z  W" Z  q. r* a; o
( q% v4 p1 S1 L$ V8 q: a0 f0 N
! r9 K$ k9 [. Q# p; K! g4 k
/* assign the tl som board LED-GPIOs*/# u* [& S: f) d( U0 g# n! J
/ t2 H% P- f2 [- s) x; C
static const short da850_evm_tl_user_led_pins[] = {3 _2 {3 V. r( m. D2 i' m$ a
/ K3 {7 N4 v* F9 x% b  z
        /* These pins are definition at <mach/mux.h> file */
0 s0 I# o) F0 I* m! [' ~
- j2 ]) X  {* z" D6 @. |3 b8 J) \- L        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,
' ]5 N9 U  h9 T+ X) ~  A5 W' `1 s7 D- t, q6 A; P& `, y
        -1
5 {8 \" Q, G8 `7 q0 o# H; w( s1 ^0 f6 X3 d" x" z7 @
};6 k7 J; [( [- w" J$ }

$ D6 B* S9 t2 U9 l; h- s1 p1 G. V1 a  G; k  J- X

" p4 G' ]# ~$ G% bstatic struct gpio_led da850_evm_tl_leds[] = {1 q9 ]! @1 U( F% [$ v' z& j- ~
# ]* G! L& u1 |4 C+ k$ C
        {
3 v/ T) k: t" l% W6 |& I" I
1 W. _( g7 P6 g  J! Z' L2 g                .active_low = 0,
4 u' X( S& x: x" q4 e/ c
+ j$ h: Q! ?$ _* n                .gpio = DA850_USER_LED0,4 j; V* \( N4 F5 G6 ?

2 z! X) L: T$ F% i7 y( W+ u+ }                .name = "user_led0",% z+ V$ T) q( `" B& r8 W
# @; T7 ~& m/ I9 B$ s1 d( S9 c" `
                .default_trigger = "default-on",
7 M! {5 T4 v9 }5 e5 g
' [3 ]9 n7 g" c3 Y) G        },. ^' ?9 t1 @: o. U* i
: R0 w- b# z' Z8 l" U9 f: |
        {, J% H6 ]0 O3 F$ m3 F
1 U4 K- {1 C7 f  V; Z
                .active_low = 0,7 e9 Q. |* J+ N, B5 a2 o" P- O
% p. N  J, p' z) {( m& J3 X
                .gpio = DA850_USER_LED1,
% v* k6 @/ `( ?5 E" F: B  k; [* Z- l- m7 w) }  |
                .name = "user_led1",2 `3 r2 y0 W% D% ?- d6 o
# K0 {6 P' R" S2 `0 }4 K9 e% r
                .default_trigger = "default-on",* H2 e6 L/ c8 M6 V# H

. V4 Z2 k0 o( c& O        },; b% y) t1 u" Q5 N! P
9 w# g( E9 V3 j6 E& @
        {3 H  @: R- u" g) V% _) U2 X

+ g# Q+ W( f3 [                .active_low = 0,
  F! [/ t& v( ^- j5 i: A0 z* h$ H; l* K3 O
                .gpio = DA850_USER_LED2,
6 u# F2 F8 z3 y; Q; A
4 O9 m8 p, h6 x0 K/ ~                .name = "user_led2",3 \' |: S- J5 A/ T: I" M
+ E5 \4 u% i9 U
                .default_trigger = "default-on",6 L8 z( _7 G; V2 j1 ]% Z6 q7 A
7 r% v1 E) f( G8 x$ z
        },
5 x% S& R0 p# x# J2 |9 l' ~& F4 d9 S5 ]* p
        {/ v4 H; {' D6 l, i. B
& w% H0 C( |: G6 o9 }
                .active_low = 0,
- @% X* {- i5 G3 B* P  Z
( v9 i, y! ]: M" m                .gpio = DA850_USER_LED3,
! a' f4 c7 D  I, h& d
4 N! |$ v" E) O$ _3 h+ \4 l                .name = "user_led3",$ ~) q6 }2 Q) u  E0 U1 q  I# m. e  h
: g6 \( {. `1 o# w* ~
                .default_trigger = "default-on",
1 s0 l( @! Z! |* K( J0 u, r  w( N# u5 Y* ~4 q
        },  k8 i9 |+ Z6 r  E/ C! W7 w" _

# M$ @6 V+ K, ?        {
0 I7 C6 h) `5 o: T9 b- {/ M5 H# q! ?1 ^* e
                .active_low = 0,
2 c- p: y* X; i1 p
; w) a! U7 O/ c+ D1 Y. j                .gpio = DA850_USER_LED4,- ^% U0 l2 T; Y( a" s- w
9 b: v' Y0 t) x, i* ^, ~
                .name = "user_led4",
& a* D# Z" e/ Q( ]- O% O( R" g+ U
* x, Z. n% {7 h$ H+ U1 ]7 f                .default_trigger = "default-on"," C# F$ o" e" e' j! a% c
8 s6 @- k/ V/ w& I" y1 R
        },8 p0 Z& P' R9 P% E4 `( L9 ~
, p/ J* a- q1 o3 o
        {
. q( S% J( M; ^" _9 f
+ j& j1 I5 m  W& V6 E                .active_low = 0,/ f7 M$ |5 O5 }
' @  m2 h4 b: s
                .gpio = DA850_USER_LED5,* y# h; c- e1 y! q7 f  `" P
: O( S7 O$ T7 X, d
                .name = "user_led5",
4 F, G+ P; F' O- K' F6 ~6 ~6 p- [8 s/ k; P
                .default_trigger = "default-on",
; U: y: R0 ~$ j" b* k, Y0 W8 i" S) I- Y5 b$ P8 k3 i  {/ i
        },, m0 W- P4 d+ W

+ V6 N; W7 [! q* B# H# u9 t6 z% Y8 Z};
7 {) h3 b- [1 i& v, Y  L, `
$ c( D0 d- K# @/ K6 x# O0 t
: ]2 v- l! x1 d, u3 |  F# S/ Z' K* K+ @! C$ A' Y- _/ N5 L$ ~
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
* b) P: ^' B6 f6 n9 W- z
( Z5 t/ M* ?5 f# C        .leds = da850_evm_tl_leds,
$ K" F# r" c( P0 F
) i/ p5 n$ ]" C' Y4 P        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),! c; |) }, n, T: s  J

: g  e+ t2 U) U7 s};
2 ?$ E: q7 S9 u9 y3 s5 N4 n0 b  X' E

) |2 T$ _2 [  \9 }7 m9 v" t* c2 {* t- u0 ?" o' k% Q, R5 s
static void led_dev_release(struct device *dev), b0 ], y% H* _* K, X

8 x# c$ [& j3 P{
9 M7 ^  Y8 l' {) o% v7 p' Q4 P3 A: r8 J9 @3 C9 i0 c
};$ O+ P, R- l" c3 k
' M2 h0 ~. A& H% C4 z! u* t7 y' m
* @5 ^! ^! |* g! j! _# I: x- O

0 ]; T; h% p0 G+ p$ ^static struct platform_device da850_evm_tl_leds_device = {- a* ]; t: c, h$ r( [

5 V( x; r4 h- [7 f        .name                = "leds-gpio",
+ Y( W* y# T( ^6 y2 f  G  o
( v2 _, k  y; F% Z* h        .id                = 1,
, I9 k& S; b' G6 |  \; u7 j2 |8 O
        .dev = {
! c9 X8 c7 S8 l, a5 M6 Y# t1 a2 O. }/ u& p
                .platform_data = &da850_evm_tl_leds_pdata,% k* `; o; ]3 j6 R2 v4 J2 S2 ]1 {
7 A8 D) j0 G% Z" D  \8 Y
                .release = led_dev_release,) V4 H( t# M- v, r# h  i$ p
0 B: E7 K, a; r& r4 Q
        }! h5 O" q  u1 H$ m8 U

/ m6 s8 m% c: t};: g, C- J% n# m* m' a9 e

% b: Z$ B5 P0 ?- E
2 m8 C1 g8 k8 S2 }$ n& i
) q5 u# o* o3 F1 h+ Tstatic int __init led_platform_init(void)
/ M: O6 j, {+ D% I* S( Q2 {$ {" ~4 I; _$ F, C" ~+ a
{! `1 I! e/ ?/ d' X( t3 V, y7 o
: V/ d  U8 f0 ?0 z/ S
        int ret;& n- i( J& H3 \9 t! R
% k1 N& S, n5 B& H' ?' X: L
#if 0) C$ h+ W( F. S' |, K; W
4 E8 S; O( N2 K* `
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
" `* F4 p% p3 x" g, e7 ~3 w3 W0 R8 ^" R2 [# F* |& b0 e
        if (ret)
  s+ }. V+ C+ ]' b. S
1 e+ ^) ~: |( W1 x  ]7 O! K$ a                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"5 L$ k$ F8 Y2 i; B4 z
! Z/ l( ~& R: n9 N- J# @  B1 P4 [
                                "%d\n", ret);# g; W6 A' f% J& j; d# [8 [4 S5 i
" A0 g% U: q0 I! R# Z' P; {
#endif8 |$ ]0 r2 b" A; m" t% o7 L

% o' z" @3 n. ^1 a0 m0 _        ret = platform_device_register(&da850_evm_tl_leds_device);' s8 \1 U- b4 D, \7 C. ]

! l* q9 E% S" k        if (ret)3 o( e2 T2 T, \1 G2 @$ y9 |
0 e) H- \% T: p7 k  s
                pr_warning("Could not register som GPIO expander LEDS");
* o; Q7 x% b4 z9 {, [2 @. k9 {
' S9 o& Y) o1 F$ a9 E% G        else/ V3 w* c1 z- y# y1 ]2 B
7 O$ E4 M8 b! H0 p% f+ V7 i/ z
                printk(KERN_INFO "LED register sucessful!\n");
% o* g+ S" ^, r3 c! F# i* w# H
! S0 f6 K: F3 H7 a( o/ n) ?( ]1 W$ P  o' g
: e4 m4 C- j# g% L* ^& h8 N
        return ret;
" `6 t" g8 y+ r! k2 @/ W, g) I+ q( w# H" Z' o
}
% j+ [& n/ i% p( s+ K3 x1 k- l6 n( p! v
5 K, J! X$ L/ O" z9 \+ u

+ [/ ?6 t' u' Y8 a$ nstatic void __exit led_platform_exit(void)% B7 R6 }5 f" j& J$ E, V3 N, d
1 L* s" l9 q0 s" Q$ m5 S
{
7 r8 Z7 [6 ?2 G; }* d. w# |' g: S. ]
; g$ K* a1 d- y0 n) X& \' j5 |        platform_device_unregister(&da850_evm_tl_leds_device);8 X* d$ w  p/ N# N8 j
! i, p; x$ A/ x4 D# ]) n% t2 ~
! L' W8 _( V2 ?6 q4 b

8 t/ ^' j, \8 |( J$ D2 z) ]        printk(KERN_INFO "LED unregister!\n");' M2 d* {' h& n0 C* n4 R
- k$ Q' m3 u  I" B5 `
}3 w3 C" G; P! A$ b
5 V7 y/ |7 D8 Z3 p% g, K- h5 ~

+ @4 ^* y) u3 u# l% b: |  S0 z; j4 `/ q
module_init(led_platform_init);* }  i  u* D0 \8 g2 [- L  E; r

# s0 o; n, F6 B7 p+ Rmodule_exit(led_platform_exit);! a8 b1 b* K2 n8 y

1 `" K- v! X- w! d
4 x4 |6 e# ]& U* |9 T; g0 M6 f; c$ K: j
MODULE_DESCRIPTION("Led platform driver");9 t9 x; `% i; P: U. O$ P6 p, A+ J/ p
' i1 i+ j6 P/ s* Z  F' o
MODULE_AUTHOR("Tronlong");
; U! v" x. j9 K+ N- `' _/ C6 r; a* d5 \( W$ ^! z7 K
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。/ o% M9 ~7 {+ E( Z" \% c* {

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32; r6 [; M8 e1 t6 N- W6 |
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
0 Y1 P8 P+ H; ?) E ...
% Y0 a0 z, N0 a) @, l. D2 V
好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2085

积分

创龙

Rank: 8Rank: 8

积分
2085
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。- }+ d; a& L8 v6 Z) k
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-7-8 19:03 , Processed in 0.043718 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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