标题:
基于嵌入式Linux的多磁控管电源控制系统 02
[打印本页]
作者:
samwalton
时间:
2014-3-6 19:51
标题:
基于嵌入式Linux的多磁控管电源控制系统 02
1)初始化串口相关的硬件设备。涉及到重要的结构体为:
static struct tty_driver normal, callout;
static struct tty_struct *s3c2410_table[UART_NR];
static struct termios *s3c2410_termios[UART_NR];
static struct *s3c2410_termios_locked[UART_NR]。
(2)注册中断服务程序。接受中断服务程序:
static void s3c2410uart_rx_interrupt(int irq, void *dev_id,,struct pt_regs *regs);
发送中断服务程序:
static void s3c2410uart_tx_interrupt(int irq, void *dev_id, ,struct pt_regs *reg);
(3)在内核中注册设备。uart_register_driver(&s3c2410_reg)。
(4)设备的加载和卸载。module_init(s3c2410uart_init);module_init(s3c2410uart_init)。
设计好硬件驱动程序后,为控制主芯片裁剪Linux内核以适合控制设备的需要。进入PC机Linux操作系统,进入ViVi原代码目录,执行“make menuconfig”命令开始配置内核。配置完毕以后再执行“make”命令便宜ViVi。将ViVi的映像文件通过JTAG烧写到设计好的硬件电路板中。
进入Linux内核文件中执行“make menuconfig”命令开始配置Linux内核文件,选上要使用的驱动选项并根据电路板实际芯片模块配置内核,最后使用“make”命令编译内核文件。如果编译出问题需要修改内核文件。编译成功以后通过串口将生成的映像文件下载到电路板中。之后ViVi 就可以启动下载好的内核文件。内核的设计及其调试流程图2—1。
图2—1、内核调试流程
3、基于QT的主芯片控制系统程序设计和从芯片程序设计
图形用户界面GUI是迄今为止计算机系统中最为成熟的人机交互技术。不同于桌面系统,嵌入式GUI所具备的特点:
*体积小;*运行时耗用的系统资源小;*上层接口与硬件无关,高度移植;*高度可靠性;
在开发中,考虑到问题主要集中在图形用户界面对硬件的要求,设计中提供给用户的最终界面是简单的实用性。
设计中采用挪威TrollTech公司提供的嵌入式开发平台QT/Embedded,做为本设计的软件开发平台。该平台以C++语言作为开发语言,其核心被称作信号与槽的机制。设计中,主芯片主要完成把数据显示在液晶模块上,让用户直观的控制设备的运行状况。同时还要把用户设定的功率发送给从芯片,使从芯片输出功率的波形。利用QT自带类QLCDNumber可以完成此工作,其中继承了显示相关的许多功能。图形控件布局采用类QWidget,时间的计算显示采用类QTimer。通讯模块中采用Linux内核函数cfsetispeed()进行波特率的设定,利用串口重要数据结构体struct termios Opt对串口的校验位,停止位进行相应的设定,达到发送和接收数据的目的。图3—1显示主芯片程序设计流程。
从芯片采用中断方式接收主芯片发送过来的数据,并对接收过来的数据进行处理后,在端口引脚输出波形,波形经过输出电路产生适合大小的功率。同时从芯片不断的接收采集模块采集的电流数据,并对数据进行处理,再通过串口发送给主芯片,显示在主芯片的液晶模块上,提供给用户监控,并可以对危险信号进行处理。
图3—1、主芯片程序流程图
4、控制系统的软硬联调
将编写好的主芯片程序应用交叉编译器进行编译,产生二进制代码,应用网络下载到主电路板中。同时把程序所关联的库文件和联结文件通过网络下载到主电路板Linux内核的对应位置并进行相应链接。
编写好的从芯片程序用编译器编译生成二进制代码,并烧入芯片的Flash中,以使得代码固化在芯片中。
为了检查设计电路测量和输出的准确性,需要验证给定功率、实际功率、显示的反馈功率之间的大小关系。最后实验显示:给定功率=计算实际功率=显示的反馈功率,证明设计的基于Linux控制系统能准确的运行,设计达到了性能要求。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0