0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于uClinux和S3C4510B微处理器实现家庭网络中央控制器的设计

电子设计 来源:单片机与嵌入式系统应用 作者:黄布毅;童志文;陈 2021-06-19 17:05 次阅读

作者:黄布毅;童志文;陈晓雷

随着信息社会的发展,网络和信息家电越来越地出现在人们的生活中。人们普通要求将家庭内的所有家用电器与Internet连接起来,实现主人在远方用计算机或电话通过Internet对象家庭电设施进行监控。家用电器制造商可以通过网络对其生产的设备进行售后跟踪服务;家用电器是故障时能自动按预设的邮件地址来发送电子邮件进行报警。这就需要有一个“家庭网络中央控制器”。它对外与Internet连接,对内通过家庭内部无线局域网将所有家用电器连接成一体,从而确保信息家电安全地接入Internet。当前,多数研究单位推出的家庭网络智能控制器,均以PC或准PC机作为硬件平台,由于价位高而均未被市场容纳。

嵌入式Internet是近几年发展起来的一项新兴技术。以32位ARM嵌入式微处理器为硬件平台,通过移植嵌入式操作系统uClinux内核,开发相应的硬件驱动、微型GUI和上层应用软件,最终实现产品化的嵌入式家庭网络中央控制器。该系统具有体积小、功耗低、价格便宜的特点。

1 系统的硬件组成

本系统以高性能、低价格的S3C4510B为主CPU。它是Samsung公司推出的基于ARM7TDMI核,精简指令系统的32位高速微处理器。工作电压为3.3V,内核ARM7TDMI的工作电压为2.5V,大大降低了芯片的功耗。S3C4510B片上资源:一个总线仲裁器可以根据总线仲裁优先级在片上功能模块和外围设备之间进行系统总线控制权分配;8KB指令、数据复用Cache,每128bit为1页,并可全部或部分设置为SRAM;1个主I2C总线控制器,可作为主发送器或主接收器,能连接多个从设备;2个通用DMA;18个通用I/O口; 2路4线UART口,其中一个支持IrDA 1.0,可用于红外通信;6组ROM/SRAM/Flash用于管理外部存储器。另外,可扩展4组动态存储器和4 BANK扩展I/O设备;2通道带有DMA传送方式的HDLC口;1个10M/100M自适应以太网控制器。

图1为家庭网关的硬件框图,以S3C4510B为基本核心系统,外围扩展一系列功能模块。有4×4键盘及以屏幕LCD显示构成良好的人机界面,用于手动本地参数查询和设定。家庭网关基本系统以SPI接口与PTR3000无线收发模块相连,同时家庭内部家电控制器也通过SPI接口扩展PTR3000无线模块。这样,家庭网关的无线模块以轮询的方式与家庭内各家电控制器上无线模块进行通信,从而组成家庭内部无线子网。家庭网关基本系统只需对SPI口进行操作即可实现与家电通信。实现了家电以家庭网关为中介与Internet在物理层互联的三个通路:PC通过LAN经由Internet连接到基本系统的以太网口、PC通过Modem经由公司电话网与嵌入式Modem相连再到UART1、电话机经过公用电话网经语音卡连到UART1。

2 uClinux嵌入式操作系统

操作系统选用uClinux。它是一个完全符合GNU(GNU’s Not Unix,自由软件基金会)/GPL(General Pulic License,通用公共许可证)公约的完全开放代码项目,是标准Linux的一个分支,现在由Lineo公司支持维护。它专门针对没有MMU的CPU,并且专为嵌入式系统做了许多小型化的工作。

UClinux经过对标准Linux内核的改动,形成了一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,但uClinux仍然保留了Linux的大多数的优点,稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持以及标准丰富的API。它的主要特片如下:

①在linux-2.4.x/driver/char/Makefile添加1行:obj_$(CONFIG_SPI)+=SPI.0。在24行obj-y+=mem.o tty_io.o后加PI.o。

②在linux-2.4.x/driver/char/Config.in,添加1行:bool‘SPI’CONFIG_SPI便于在make me nuconfig时选择。

③在linux-2.4.x/driver/char/mem.c在文件头部添加:#ifdef CONFIG_SPI /*编译时选择该项就执行SPI的初始化函数*/

extern void SPI_init(void);

#endif

在chr_dev_init()函数添加:#ifdef CONFIT_SPI

SPI_init();

#endif

④修改vendor/Samsung/4510b/Makefile,建立起设备节点。

在12~35行间,DEVICE部分添加内容SPI,c,29,0。SPI是设备名,c代表字符设备,29是SPI的主设备号,0是SPI的次设备号。⑤make menuconfig时选中SPI编译,然后直载。

启动后,会看到/proc/devinces中字符设备多了一项SPI 29。

S3C4510B有18个通用I/O口,其中高10位可设置为其它功能口。在该系统中,设置P8为中断接收线,P11模拟主机输出线MOSI,P12模拟主机时钟SCK,P13模拟主机输入线MISO。P8口用于接收PTR3000的发送请求信号。当P8口接收到请求信号时,系统进入中断处理。中断处理进程唤醒睡在睡眠队列SPI_WAIT上的读进程,读进程由P12口输出SCK信号并由P13口读入数据。值得说明的是,SPI不带中断线,在此用P8口做中断接收线是为了避免操作系统在没有进行SPI操作时不断向SCK线发时钟信号。因此,MSP430F147IPM必须另外与S3C4510B连一个引脚在请求发送数据时发出中断接收线是为了避免操作系统在没有进行SPI操作时不断向SCK线发时钟信号。因此,MSP430F147IPM必须另外与S3C4510B连一个引脚在请求发送数据时发出中断请求信号。实现过程如下:

Static wait_queue_head_wait; //休眠队列

//读函数

static ssize_t SPI_onlyread(struct file*file,char *buf,size_t count,loff_t *ppos)

{

interruptible_sleep_on(&SPI_wait); //读进程睡眠等待读中断信号

if(count>BUFNUM)count=BUFNUM;

for(num=0;num

for(i=0;i<8;i++){

iopdata=iopdata^0x1000; //时钟输出

SPI_read[num]=SPI_read[num]+((iopdata&0x2000)>>(12-i)); //数据输入

}

}

if(copy_to_user(buf,&SPI_read,count)) //数据从内核空间拷贝到用户这间

return-EFAULT;

return count;

}

//写函数

static ssize_t SPI_onlywrite(struct file *file,const char *buf,size_t count,loff_t *ppos)

{

if(count>BUFNUM)count=BUFNUM;

if(copy_from_user(&SPI_write,buf,count)) //数据从用户空间拷贝到内核空间

return-EFAULT;

for(num=0;num

for(i=0;i<8;i++){

iopdata=((SPI_write[num]&0x1)<<11)+(iopdata&0xfffff7ff);

SPI_write[num]=SPI_write[num]>>1;

iopdata=iopdata^0x1000; //时钟输出

}

}

return count;

}

//中断响应函数

static int SPI_irq(int irq,void *dev_id,struct pt_regs *regs)

{

intpnd=intpnd|0X1; //清中断位

wake_up_interruptible(&SPI_wait); //唤醒睡眠队列

return 1;

}

//字符设备驱动接口

static struct file_operations SPI_fops={

owner; THIS_MODULE,

read: SPI_onlyread,

write: SPI_onlywrite,

};

//初始化函数

int_init SPI_init(void)

register_chrdev(29,“SPI”&SPI_fops);//设备注册函数

init_waitqueue_head(&SPI_wait);

if(!request_irq(0,SPI_irq,SA_SAMPLE_RANDOM,“SPI”NULL)){ //中断申请

return-EFAULT;

}

iopmod=(iopmod&0xffffe7ff)=0x1800+iopmod; //设置通用I/O口模式

iopcon=(iopcon&0xffffffe0)+0xle+iopcon;//设置通用I/O模式

enable_irq(0); //开中断

return 0;

}

module_init(SPI_init);

MODULE_LICENSE(“GPL);

EXPORT_NO_SYMBOLS;

结语

实验证明,模拟的SPI口接收发送数据准确可靠。用户程序可以以设备文件的形式进行访问,与标准的SPI接口无异。该方案对于嵌入式家庭网关的研究,以及运用uClinux作为操作系统的嵌入式模拟通信接口,有一定的参考价值。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16064

    浏览量

    176913
  • 微处理器
    +关注

    关注

    11

    文章

    2241

    浏览量

    82241
  • 总线
    +关注

    关注

    10

    文章

    2856

    浏览量

    87877
收藏 人收藏

    评论

    相关推荐

    基于S3C4510B微处理器uClinux实现存储系统的设计

    、FLASH、Normal DRAM和Sync.DRAM等。本文所采用的存储包括有SDRAM和FLASH。S3C4510B(以下简称4510微处理器是构建在ARM核ARM7TDMI
    发表于 06-28 08:28 842次阅读
    基于<b class='flag-5'>S3C4510B</b><b class='flag-5'>微处理器</b>和<b class='flag-5'>uClinux</b><b class='flag-5'>实现</b>存储系统的设计

    μClinux在S3C4510B上的移植

    Linux是一种支持多种体系结构处理器的操作系统.有很强的移植性。描述了将UClinux移植到基于S3C4510B处理器目标板上的方法与过程。首先介绍了
    发表于 03-28 13:18

    s3c4510b中文手册,s3c4510b用户手册

    s3c4510b中文手册,s3c4510b用户手册:ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立
    发表于 10-14 10:54 421次下载

    s3c4510b中文资料

    本书所讨论的S3C4510B即为一款不带MMU的ARM微处理器,可在其上运行uCLinux操作系统。系统的工作频率系统的工作频率在很大程度上决定了ARM微处理器
    发表于 10-14 11:11 8次下载

    基于uCLinuxS3C4510B网络通信设计

    基于uCLinuxS3C4510B网络通信设计
    发表于 03-28 09:49 17次下载

    μClinux在S3C4510B上的移植

    Linux是一种支持多种体系结构处理器的操作系统.有很强的移植性。描述了将UClinux移植到基于S3C4510B处理器目标板上的方法与过程。首先介绍了
    发表于 03-28 09:51 16次下载

    网络通信处理器S3C4510B的网口驱动设计

    嵌入式处理器S3C4510B网络控制和通信领域有着相当广泛的应用。本文简要描述该处理器内嵌的以太网控制
    发表于 05-15 16:24 18次下载

    基于uCLinuxS3C4510B网络通信设计

    结合工程实例, 基于S3C4510B 微处理器, 构建以DM9161 为以太网物理层接口的低功耗、高速硬件电路;在嵌入式操作系统uCLinux实现
    发表于 05-16 13:29 16次下载

    基于uCLinuxS3C4510B网络通信的设计与实现

    文章结合工程实例,基于S3C4510B 微处理器构建了以DM9161 为以太网物理层接口的低功耗、高速硬件电路。并且在嵌入式操作系统uCLinux实现
    发表于 08-14 12:07 34次下载

    基于S3C4510B的嵌入式路由的研究

    提出一种基于ARM 微处理器S3C4510BuClinux 操作系统的嵌入式路由的设计方案。首先简单介绍了Netlink 套接字,然后分析嵌入式路由
    发表于 01-13 15:47 39次下载

    基于S3C4510B的HDLC协议实现

    使用嵌入式微处理器S3C4510B内部包含的HDLC控制器封装和解析HDLC协议,微处理器既可实现系统功能,又可完成HDLC协议的数据传输,
    发表于 07-08 15:26 46次下载

    S3C4510B型ARM微处理器最小系统构建

    本文介绍S3C4510B型ARM微处理器最小系统的构建,并给出系统外围相关器件的选型。
    发表于 08-19 14:33 3025次阅读
    <b class='flag-5'>S3C4510B</b>型ARM<b class='flag-5'>微处理器</b>最小系统构建

    三星ARM处理器S3C4510B的HDLC通道使用及编程

    三星16/32位ARM处理器S3C4510B是目前在国内应用非常广泛的一种性价比很高的ARM处理器,本文在介绍S3C4510B中HDLC通道结构特点的基础上,详细说明了
    发表于 04-05 11:44 1286次阅读
    三星ARM<b class='flag-5'>处理器</b><b class='flag-5'>S3C4510B</b>的HDLC通道使用及编程

    基于S3C4510B微处理器和操作系统实现网络通信工程的编写设计

    Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统
    的头像 发表于 10-04 17:37 1933次阅读
    基于<b class='flag-5'>S3C4510B</b><b class='flag-5'>微处理器</b>和操作系统<b class='flag-5'>实现</b><b class='flag-5'>网络</b>通信工程的编写设计

    基于S3C4510B微处理器的最小系统设计

    介绍S3C4510B型ARM微处理器和基于该处理器设计的最小系统,概述该系统外围应用电路的选型,以便使用者自行设计开发。
    的头像 发表于 07-23 15:17 779次阅读
    基于<b class='flag-5'>S3C4510B</b>型<b class='flag-5'>微处理器</b>的最小系统设计