主题 : 关于内核配置的一个简单操作遇到的问题求指教啊???!!急 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 60373
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2011-12-09
最后登录: 2017-09-13
楼主  发表于: 2011-12-09 10:27

 关于内核配置的一个简单操作遇到的问题求指教啊???!!急

管理提醒: 本帖被 qq2440 从 micro2440技术交流专区 移动到本区(2013-11-18)
#include <stdio.h>

#define rGPBCON    (*(volatile unsigned *)0x56000010)    //Port B control
#define rGPBDAT    (*(volatile unsigned *)0x56000014)    //Port B data
#define rGPBUP     (*(volatile unsigned *)0x56000018)    //Pull-up control B
void delay(int i);
int main()
   {
   unsigned long SHUZI=0x00;                 //GPb5678    
  
   rGPBCON=0x15400;
while(1){
rGPBDAT=SHUZI;
delay(100000);

   rGPBDAT=0x1e0;
delay(100000);}

   return 0;}

void delay(int i){
int j,k;
for(j=0;j<i;j++){k=9;}}


程序很简单就是让led灯一会亮一会不亮,我是在电脑linux系统下编程然后交叉编译到U盘里,再到开发板的触摸屏的终端运行的,不过出现了Segmentation fault(分段错误),我不知道是IO口的地址给错了还是怎么回事,球指教啊  !!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2011-12-09 12:27
在Linux上,你不能在用户空间的应用程序里直接操作像0x56000010这样的硬件物理地址。通常情况下,你需要写一个内核空间里的led驱动程序,然后通过应用程序来控制驱动程序用自定义的方式来控制。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 60373
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2011-12-09
最后登录: 2017-09-13
2楼  发表于: 2011-12-09 12:54
首先谢谢啦,micro2440在开机的时候就有计数闪烁,是不是意味着他的内核驱动和应用文件都编好了?我要开发的话就应该把那个应用文件删掉对吗?
在pc机上操作编译的时候,是不是应该把micro2440系统中带的内核文件和头文件都带上,不然gcc时候会出现no dictoranary !!请问这些内核文件和头文件在那边,我是指linux系统下的
级别: 新手上路
UID: 60373
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2011-12-09
最后登录: 2017-09-13
3楼  发表于: 2011-12-09 12:59

 回 1楼(kasim) 的帖子

         首先谢谢啦,micro2440在开机的时候就有计数闪烁,是不是意味着他的内核驱动和应用文件都编好了?我要开发的话就应该把那个应用文件删掉对吗?
在pc机上操作编译的时候,是不是应该把micro2440系统中带的内核文件和头文件都带上,不然gcc时候会出现no dictoranary !!请问这些内核文件和头文件在那边,我是指linux系统下的