2925|3

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

初学嵌入式,有几个小小问题 [复制链接]

环境:ARM7(S3C44B0X)+uclinux


  1. struct unit{
  2.     struct semaphore lock;
  3.     u32* PCONB;
  4.     u32* PDATB;
  5.     u32* PCONF;
  6.     u32* PDATF;
  7.     u32 b;
  8.     u32 f;
  9. };

  10. static struct unit led_unit = {
  11.     .PCONB = (u32 *)S3C44B0_PCONB,
  12.     .PDATB = (u32 *)S3C44B0_PDATB,
  13.     .PCONB = (u32 *)S3C44B0_PCONF,
  14.     .PDATF = (u32 *)S3C44B0_PDATF,
  15.     .PUPF  = (u32 *)S3C44B0_PUPF,
  16. };
复制代码

1.S3C44B0_PCONB,S3C44B0_PDATB,S3C44B0_PCONF,S3C44B0_PDATF,S3C44B0_PUPF 这些寄存器是在哪定义的?怎么知道这些寄存器是控制哪个I/O口的?
2.书上说unit.b用来保存PDATB.4和PDATB.5的值,unit.f用来保存PDATB.3和PDATB.4的值,而且它们的某一个比特位就是LED灯的开关,但是从哪里能知道到底是哪一位呢?还有怎么知道这些寄存器是控制LED灯的呢?

2.我的开发板只有3个LED灯,上面例子是控制4个,我怎么找到控制我开发板上LED的寄存器?

3.每次写好一个驱动都要重新编译一次uclinux,测试效率很低,有什么快捷的方法?

4.我是新手,大家能否介绍点资料,手头没有资料是在很难前进......(现在这本讲得很草率,勉强用了,因为只能找到这本)

最新回复

对着IC spec的寄存器看啊!   详情 回复 发表于 2008-10-5 17:27
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
S3C44B0资料很多啊。
对于C语言中访问寄存器,通常都是#define 寄存器名称 (*(volatile 数据类型 *)寄存器地址)来绑定
经过这个之后就可以通过 寄存器名称 来访问了,
比如
//Nand Flash
#define rNFCONF                (*(volatile unsigned *)0x4E000000)                //NAND Flash configuration
#define rNFCONT                (*(volatile unsigned *)0x4E000004)      //NAND Flash control
#define rNFCMD                (*(volatile unsigned *)0x4E000008)      //NAND Flash command
#define rNFADDR                (*(volatile unsigned *)0x4E00000C)      //NAND Flash address
#define rNFDATA                (*(volatile unsigned *)0x4E000010)      //NAND Flash data
#define rNFDATA8        (*(volatile unsigned char *)0x4E000010)     //NAND Flash data
#define NFDATA                (0x4E000010)      //NAND Flash data address
#define rNFMECCD0        (*(volatile unsigned *)0x4E000014)      //NAND Flash ECC for Main Area
#define rNFMECCD1        (*(volatile unsigned *)0x4E000018)
#define rNFSECCD        (*(volatile unsigned *)0x4E00001C)                //NAND Flash ECC for Spare Area
#define rNFSTAT                (*(volatile unsigned *)0x4E000020)                //NAND Flash operation status
#define rNFESTAT0        (*(volatile unsigned *)0x4E000024)
#define rNFESTAT1        (*(volatile unsigned *)0x4E000028)
#define rNFMECC0        (*(volatile unsigned *)0x4E00002C)
#define rNFMECC1        (*(volatile unsigned *)0x4E000030)
#define rNFSECC                (*(volatile unsigned *)0x4E000034)
#define rNFSBLK                (*(volatile unsigned *)0x4E000038)                //NAND Flash Start block address
#define rNFEBLK                (*(volatile unsigned *)0x4E00003C)                //NAND Flash End block address

至于位置,你完全可以查找,使用Find in files功能
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢LS的,我现在还不知道怎么确定一个u32变量中哪个比特位控制哪个灯......望指教
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
对着IC spec的寄存器看啊!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表