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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
跳转到指定楼层
楼主
发表于 2018-12-14 09:13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红线绕指柔 于 2018-12-14 15:33 编辑 ' N/ T3 `/ W2 t: a' M  ~: h& I
; z- _+ m$ t6 f
请问一下,如下图所示我在CCS中进行裸机程序的开发时直接通过带边相应寄存器的值来驱动LED灯的亮灭,这样是可以成功的驱动灯的亮灭的
  I! P1 c# E# @) w1 I
2 x+ b, {- j1 g# C之后我将该段程序移植到Linux系统上,使用指令arm-none-linux-gnueabi-gcc LED.c -o LED生成相应的镜像文件,复制到SD系统启动卡上,执行镜像文件./LED为什么会没有现象?请问是缺少了什么配置?# F; V' S+ p+ O' T- |1 P4 k4 D

! X+ m7 o& F  a7 v  ?7 E" v1 M

本帖子中包含更多资源

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

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
, h* h8 p) L3 ?' B5 A# \linux下用的是虚拟地址,应用程序是不能直接调用硬件设备的,直接操作硬件设备的是驱动程序,建议您编个驱 ...

9 r: ?3 F  o+ m我倒是知道需要编写驱动,主要问题还是地址的映射问题,就是在驱动里面如何来实现地址的调用,我看你们的LED驱动程序里面也没有相关的地址调用问题啊,如下列的你们提供的源码所示:
0 B  T% T* P% J5 |6 W- C# p/ [1 D3 M1 d#include <linux/module.h>+ V4 r7 a4 j9 @: c- J% \
) U5 o8 a6 U7 h5 v
#include <linux/kernel.h>. f5 h8 k! M! j+ {. Q1 W7 T: P; V
- k8 \, J" Z5 J$ t
#include <linux/types.h>
% R6 l9 l* `- C3 M$ x; P! l0 V9 V0 ?  ?
#include <linux/gpio.h>
! |, {: P9 j" t# u
' j' j! G; ?. E1 `7 q, I#include <linux/leds.h>' a0 T" r: t; B; E

5 b1 {- l4 s9 K- j#include <linux/platform_device.h>" x! B/ J+ T5 q' V& U6 K) e

; f; i% p% a  z
9 a# c  [" [- k3 j& }% J, b  \  u) M& V  r1 j5 r$ n
#include <asm/mach-types.h>5 h/ X1 Z+ g9 r

# {1 T6 S, Y9 k$ D! Z6 Y#include <asm/mach/arch.h>
/ \. r7 G+ z- ^. x, N+ J% G0 r$ Y- e4 |. k7 l/ N% z
#include <mach/da8xx.h>
) y- g6 a% [0 u' \9 f7 j' Q
& t! ]& Z3 u3 q) y#include <mach/mux.h>  D. F' \! C6 h) L  q! {

9 A! L! K. w! t( G' f- Y5 |
5 i, ?' o& f, _" I6 ]# [  N! t; R7 n
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
7 n: e; h' \0 n5 x
4 W. p$ W: y  M) l- B( o* }#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)$ u! k% W0 M+ }. g7 k

( {% K4 o+ v4 E7 ^#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)/ h% b3 U4 u5 O! D
  Q5 }  i: V' |, L6 A
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)6 }& p$ u, m4 X4 o& A
, B0 z5 u, H: N& X. O' `0 B
#define DA850_USER_LED4 GPIO_TO_PIN(6,12)4 f" J: O! Q8 v9 x
' ?, j. l" N9 X
#define DA850_USER_LED5 GPIO_TO_PIN(6,13)
) [  M' T3 @! T$ W& K7 ~. z
2 @( F3 |+ P1 t
; a# o8 T; r4 L' b/ |
0 U, ^- b# k/ C4 A# \9 |  ?" f5 _/* assign the tl som board LED-GPIOs*/
5 P7 `4 o" g; S8 w
. `' B& V. \: _$ }static const short da850_evm_tl_user_led_pins[] = {
7 S2 u& C3 |0 [% V3 G
$ l8 n+ }' ?0 C- ]7 ]! \; q* O$ v        /* These pins are definition at <mach/mux.h> file */0 a+ Q+ `: S5 m) k2 f9 p1 c/ r
, U8 z" h6 n, \1 d  Q5 L
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,DA850_GPIO6_12,DA850_GPIO6_13,+ _' e6 H- F+ l/ N- B& w9 Q, O+ `
6 P6 h( j* K  ^3 s$ [
        -1: B4 O3 C0 I2 O0 ^6 @0 W1 r
* }, E' T- \9 O6 A
};
7 G3 Q( @% l1 L3 l4 z( u! D2 e! E1 L( B7 {' F# s0 d: }+ N9 E. S4 F$ n

" T( w* l  `0 e5 L# e1 W6 ?; }9 @* ^9 o, C" l% ~' |
static struct gpio_led da850_evm_tl_leds[] = {
) {( k+ n/ M; E( E. W8 t$ G* H% H  m/ l6 k. }& U: t
        {! R. [6 y" `( X9 M3 o
# W( O. P$ z% m4 L" h% G
                .active_low = 0,, M, x% q0 z' J* K3 }  E7 V
8 b/ |  u' P* c+ c, {
                .gpio = DA850_USER_LED0,
6 N' i0 G- e  j& g5 l8 n2 v: e
* t4 f1 m# @6 f2 {                .name = "user_led0",
. H2 b* h3 F# S+ Q0 R5 i' P
' O" `9 v  l" F$ O4 M3 C5 k8 Y                .default_trigger = "default-on",
: o/ A' N! V( ~" h# L
+ r( s% a" j; f; b        },2 Q) m; i& ]' W

- [6 ~. ^" ^5 P* ?5 y* o. x        {
5 O% C: \8 h) Q0 Y2 U
$ N! ~( {  ]2 k4 y- A9 F+ V                .active_low = 0,
- `8 W! m% C9 [# m/ N& T# O4 k, a& R1 H
                .gpio = DA850_USER_LED1,
6 `, p) C5 H7 \* r! T; w
/ S( [7 e7 k/ P6 J                .name = "user_led1",- Y$ r! p: }9 O; t
2 W, ^5 ~6 R0 B0 m
                .default_trigger = "default-on",- a  V7 u8 u/ K+ T! V8 i+ x
9 }. q4 a4 o( j3 F& D+ `9 z5 q
        },5 x( e) k6 K. t8 r

% K2 s4 {) _  @        {0 a, m/ A) L0 ]

, [/ t  v" U% v1 _                .active_low = 0,, r  I& P7 h, N8 ^$ n) c! q+ J

9 M8 k' u2 C. P! K4 O: G" Y  b# K                .gpio = DA850_USER_LED2,
- a! C* i+ J. f/ ^$ m  p0 n" w6 ?
, o! U9 A# \1 W  A8 Q7 q                .name = "user_led2",' N+ ]; G) S& ]0 S

; s# G/ N9 @3 x* |" g  T                .default_trigger = "default-on",
+ N4 |/ g- j' g4 v. M0 ]7 v: o0 t& Y( |( i; ?
        },
6 m1 |: Z6 ~/ b6 w. {- ]
5 K7 o% ^; f' Y        {' h$ Q% G9 Q& `
* E( r/ z& ]8 [% }2 K8 R
                .active_low = 0,6 p) ]- u, N# H2 T! X
7 w% H8 H# C% [+ y
                .gpio = DA850_USER_LED3,
7 G( p. C' O* f5 w- [6 U9 i; c" E, f3 e
                .name = "user_led3",% t; Q; u# T" w/ }3 k
' \" I  |8 G% O) y* ?; {
                .default_trigger = "default-on",
$ T8 C0 ?5 G# b5 f0 x7 P1 ]/ O; H7 y! c8 u6 E3 y# i8 o/ o
        },
$ C; x9 ^3 A% @$ }% ]3 c& q+ x0 k6 {% i
        {. s5 X/ C9 e6 r9 C3 Z  C' S
+ S' E: w1 X) Y* r' [
                .active_low = 0,1 e  ^: I+ J) g( N9 L) p% H- b
& O8 ]: H0 w* _5 l5 f
                .gpio = DA850_USER_LED4,
: A' b9 L4 c: U: h1 [& H7 M1 t( W9 p% C" x% m& z
                .name = "user_led4",
* z% g5 Y' B# s+ ?
& z3 Y' T* J- r5 V                .default_trigger = "default-on",* _  H8 u% ^& @" m

6 }8 C( ^) Y% Z        },' O/ s' A9 c6 t9 X

; T- Z$ h, d2 w4 M        {
" z& S1 {$ ?" b& H; |. Y" ?) M: @) o$ {# w$ G
                .active_low = 0,
, C- V/ `. d. x. l" U  n5 b! a% u
                .gpio = DA850_USER_LED5,$ F) x. {# c1 ~% ]! e
% H, `+ E, a4 c" T0 K
                .name = "user_led5",, O) _( i, H6 I5 v: I% \# X
$ Z6 a7 j0 H) X1 \! ~+ W* p5 Q
                .default_trigger = "default-on",
5 b7 h; y9 s% v% W: p: }5 }2 g5 E7 ^4 u6 V! X! o7 {5 N5 r
        },
3 ~4 e1 Y# B; b2 V9 l5 r. t
3 g/ h2 a$ U! x4 l7 o9 H; P) k( k8 O};$ t# a5 L" f8 n* |  a

/ I0 C, ?) o! s, J  `0 L3 `# m8 Z9 T3 V  p

' T# M# ^0 \$ d$ W8 Mstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
, p9 y$ P" o4 q' \' E- @9 q; x- g2 a* q
        .leds = da850_evm_tl_leds,$ s2 r  V" @( U8 N! g. u# Y& q

4 d  a8 x9 L7 [' l        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
; x) q$ h6 S- ~/ Z; r, S( l+ T: h" }$ ]
};9 r6 n/ b$ r" f, ?" ]1 I, J

  R) _9 ]0 [! c5 }
9 @  b" s" Q5 u9 T8 Y0 h# q/ {% S1 ?6 L& }; e9 K( }0 f( y* Q
static void led_dev_release(struct device *dev)7 g, X- w6 G4 }& ^% y

9 e3 W' O7 x! b/ Y: m) q{( H5 H/ J# ^+ g: e, U" e
! f  ]8 S  G6 H: x1 ~( ]
};/ ~/ D5 `, {  n, ^3 _  U  e5 n

& M  I2 h+ T5 z3 N! K7 P" f' F# j. o4 L" f+ g7 o7 L

* ^- _, u  _: Y( l7 n$ Ostatic struct platform_device da850_evm_tl_leds_device = {
: s6 ^1 Z4 e& z+ ^% F6 f7 N/ o1 \; o" E+ i
        .name                = "leds-gpio",
* r$ T5 w5 }" ]! z4 H3 S: ]) w" E  i: D/ }8 O1 O( N+ w( \+ d9 W. ~
        .id                = 1,
- q: m5 L0 R5 Z6 D: r
* E- C* a+ \! @! m  T0 {2 a1 H7 f        .dev = {5 W/ Y+ H8 t: F7 d

4 f" O) N" h& B9 j( m                .platform_data = &da850_evm_tl_leds_pdata,
, \  I" ?8 s; r. z' I1 l% |# o
# E6 B! D  V' E' m2 d4 }: h( j                .release = led_dev_release,
( y/ S& g. T- R" Y% ~7 u4 F( X" N0 _6 M% O3 ]: l. p7 G
        }2 J( @$ `/ e3 Y7 F0 }. j
+ ~& z4 A, Q2 _
};
* O3 M6 q# ?1 [/ i" w4 R; H0 S7 D! S0 \: V* @

0 f6 R/ N6 g( k+ o8 ^8 k$ z2 |& Y2 |3 ~' x- ~# R. }
static int __init led_platform_init(void). i- b5 w* t' c; k6 o* p' U- L
# M0 T: \9 j# G
{
! |2 X5 _' c) x4 e- ^8 a4 R+ z5 e; \+ [8 y2 t& p( ]/ T  l: q
        int ret;
* ~. c7 P: B7 s, n. _. d
  }4 q# v1 H0 d+ O& q) C) l4 c4 W#if 0
6 B2 G" R, w: \0 v: ]' J) X0 G' w: w; b
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
) \) f+ k, y0 h7 y1 m) \5 }( w! a+ W9 f. P1 y' W( T
        if (ret)
; \: c2 U6 k  H7 _2 d
, A8 u% H7 `7 m/ Y" m                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"9 p8 R# {: _: P8 S
' U2 y' s5 A/ S! B, L
                                "%d\n", ret);
: f( m( d4 G5 x" z" E( I0 w% a3 p2 O  K- A/ f) ^
#endif" G6 }- F  k- {% ^

! R, h0 D: Q/ w9 u) w  }: |8 A0 V        ret = platform_device_register(&da850_evm_tl_leds_device);; e5 j' e$ B2 s  Y* L( [
$ w! C1 v9 h, E/ t( D0 r' p6 c
        if (ret)* F1 h6 E7 S  w) t! K

1 i# ~$ y6 u/ n( Y  O! M                pr_warning("Could not register som GPIO expander LEDS");& n: ]! d3 ]2 @6 h, A& x5 |
/ _1 z$ s; c" `' {; F# e
        else
" x0 X3 i: v5 c2 {2 k* n/ G) {: k$ g
                printk(KERN_INFO "LED register sucessful!\n");
( O  p" F' M5 b" s
! R8 L1 `$ r$ `8 a2 g1 P8 }" B. V6 [
3 \! [7 u3 z1 X; K. M2 V  i2 N% W. K' E: ]! g8 }' \7 s- ]! E
        return ret;
3 [" H/ _3 d4 [' e6 |
, A( W* d2 p3 h, f8 |9 U}! p" B( T+ ?5 p/ s& _
) O0 [3 K$ K  E. v8 l, `& L
& D4 f1 v1 Z  ~7 z8 \: S
/ {2 C" `  b8 {: n
static void __exit led_platform_exit(void)& t% Y9 x0 j+ Y  z/ w6 J

  B2 i8 y3 R  z9 G( p" V: r{
2 _1 u5 `0 U. E0 i4 Y3 h  S2 I! X* Z2 k6 H: g
        platform_device_unregister(&da850_evm_tl_leds_device);- I! u; p7 F6 n2 z& Z
1 U, L/ F/ [- T7 Q6 t' ]' ?% }4 z

* `7 z' }  c5 I# v/ P
  G: ?- i" ?! Q+ I5 @8 \+ l        printk(KERN_INFO "LED unregister!\n");
- H4 s! O1 u% f9 Y5 H! b' n7 L/ l  J- q
}; N8 Q$ Q  R6 p# U

" X3 J5 @, L5 ~0 _1 m; |
5 C! I& C* ?+ i! s9 ?% m+ s  i1 G; [# k1 L+ n# U! L
module_init(led_platform_init);
' @' {: J6 P( ]) U8 R' p) t/ g2 e5 `7 X3 }( v
module_exit(led_platform_exit);$ ?" H: w: g: S7 J6 S3 r

. _# ~1 s5 t; U% a5 a3 L- n3 v% D

5 b! ^' x1 z8 N1 c, D. CMODULE_DESCRIPTION("Led platform driver");2 Q. O# S# A4 g  E

3 |% \- D* D9 _5 J! S* sMODULE_AUTHOR("Tronlong");
1 x( g+ c7 Y3 q) ]& z3 M) G3 r$ k/ P; G; L
MODULE_LICENSE("GPL");
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
地板
发表于 2018-12-17 10:32:23 | 只看该作者
您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。
% M4 b. [* K5 P1 ]4 v$ W

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

40

主题

93

帖子

530

积分

高级会员

Rank: 4

积分
530
5#
 楼主| 发表于 2018-12-17 11:32:31 | 只看该作者
广州创龙莫工 发表于 2018-12-17 10:32
7 W2 n0 R1 V) r2 N! F* w您好,程序里面已经在系统配置寄存器那里配置好了管脚配置,已经对应上相关寄存器的了。0 F0 q7 Y3 d! m. L# J7 o  ^
...

7 n- ^# A* @, W3 K8 X+ _, d好的  谢谢回答   我自己再好好研究研究吧
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
6#
发表于 2018-12-17 17:24:29 | 只看该作者
嗯嗯。可以看一下我们的视频教程。
$ f& C. D! f! j7 i7 u6 G( bhttp://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-4-20 02:49 , Processed in 0.044672 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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