剖析Blackfin及嵌入式ktClinux在数据采集系统中的应用

摘要:本文介绍了一款高性价比的嵌入式处理器,并提供了带usb、以太网、tft lcd的嵌入式数据采集系统解决方案,以及bt531的u-boot和μclinux的编写移植,大大简化了数字设备日益繁多的功能和外设驱动的开发。
前言
在数据采集系统中,数字处理是系统核心内容之一;然而随着科技发展,越来越多的功能需求使得采集系统的外设也越来越复杂,外设通讯和驱动编写成为一项复杂和繁琐的工作。以应用为中心的嵌入式系统为此类需求提供了一个良好的解决方案,能够适应实际应用中对功能、可靠性、成本、体积、功耗的严格要求。adi公司的blackfin系列处理器将嵌入式微控制器和dsp融为一体,取二者之长,提高了系统工作效能,大大降低了成本。同时,多线程的实时嵌入式操作系统也可增强采集系统的实时性、稳定性。对开发者来说,blackfin处理器和μclinux的结合很有吸引力。
系统结构及硬件平台
本数据采集系统主要由2个数据采集通道、1个触发通道、adc转换及存储电路、dsp及fpga控制部分组成,并包含有以太网、rs232接口、usb、tft液晶显示部分。系统硬件平台原理框图如图1所示。
信号从采集通道进入,经过信号调理电路进入adc,被转换后的数字信号即进入fpga、dsp进行数字控制处理。经过dsp处理过的信号,可送至其它外设以显示、存储,或通讯。
bf531为系统的核心部分之一,供电电压3.3v,内核电压1.2v,为了使系统能够开机自动从flash中启动,设置。bmode为00,即从外部存储器启动。fpga、片外sdram、flash,以及usb和液晶直接和bf531通过地址线、数据线相连。
系统中应用了tft lcd液晶显示模块fg050605dnc:,该lcd控制简单,只有rgb每色5个共15个信号,以及数据使能、数据时钟和行频、场频控制信号。lcd晶直接由dsp控制,dsp的timerl、timer2提供行、场频信号,ppi口传输数据,由fpga提供时钟,配置μclinux开辟一块framebuffer作为显示数据存储区,配合linux下的液晶驱动,即可工作。
软件设计
由于dsp中运行的是基本上已经成熟的算法和控制流程,所以软件设计的主要工作为在dsp中嵌入操作系统。
u-boot的移植
u-boot的移植主要分为两个层面,一个是对cpu的移植,一个是针对board的移植。u-boot中已经有大量可直接下载到某些开发板上的程序,为了减小工作量,可选一个最接近自己设计的开发板来进行修改。本设计中采用了stamp目标板。
具体如下:
(1)拷贝board下面的文件夹stamp,重命名为mybf531,作为即将要修改配置的目标板。
拷贝cpu下面的文件夹bf533,重命名为bf531,作为将要修改的cpu bf531。再将board和bf531文件夹中所有关于stamp板的文件名及包含头文件等改为mybf531;将所有关于bf533的文件名及包含头文件等改为bf531。注意文件间的依赖关系,确定是该添加文件还是修改文件,并记录文件改动。
(2)makefile文件
在u-boot根目录下的makefile文件中添加bf531和mybf531的编译规则,如下:
ifeq($(cpu),bf531)
objs+=cpu/$(cpu)/start 1.0
objs+=cpu/$(cpu)/interrupt.0
0bjs+=cpu/$(cpu)/cache.0
objs+=cpu/$(cpu)/cplbhdlr.0
objs+=cpu/$(cpu)/cplbmgr.o
objs+=cpu/$(cpu)/flush.o
objs+=cpu/$(cpu)/
init sdram.o
endif
mybf531_config: unconfig
@./mkconfig$(@:_config=)
blackfin bf531 mybf531
(3)include/configs/mybf531.h
板子的功能配置信息大都在include/configs/mybf531.h中,故拷贝stamp.h并修改其中的启动信息和配置信息。重点修改部分如下:
时钟信息:
#define config clkin hz
11059200
#deftne config vco mult
36
#deftne config sclk div
5
flash信息:
#deftlie cfg max
flash sect 67
#define cfg env addr
0x20004000
#defilie cfg env size
0x2000
#deftne cfg env sect size
0x2000
#defi!qe cfg flash erase
tout 30000
#define cfg flash erase
tout 30000
sdram信息:
#define config mem size
128
#define config mem add
wdth 11
#deftlie config mem
mt48lc64m4a2fb 7e 1
其它配置信息
#defilie ambctloval
0xbbc3bbc3
#define ambctl 1 val
0x99839983
#define vdsp--entry--addr
0xffa00000
并将板子上不需要的功能的宏定义作相应设置。
(4)board的移植
检查board/mybf531/中所有文件,首先将board和cpu的相关stamp.h、stamp.c改为bf531.h和mybf531.c,并检查其文件的设置、包含的头文件和宏定义是否正确。在board/mybf531/config.mk中,找到
text_base=0x03fc0000
platform_cppflags+=-
i$(topdir)
修改其中的text_base值为sdram的最大地址与cfg_monitor_len之差。
(5)cpu的移植
检查cpu/bf531/中所有文件,首先将board和cpu的相关stamp.h、stamp.c改为bf531.h和mybf531.c,并检查其文件的设置、包含的头文件和宏定义是否正确。
cpu/bf53 1/cpu.c文件的修改主要在于配置sdram页的大小属性,设置icplb、dcplb、cache的状态设置,icplb_table和dcplb_table和其相应属性的修改。
(6)其它
在以下文件夹中找到下面函数,检查并根据具体要求修改
init irq() cpu/bf531/ints.c
flash_init()drivers/
cfi_flash.c
env_init() common/
env flash.c
init_baudrate() lib_blackfin/
board.c
serial_init() cpu/bf531/
serial.c
console_init_f(); common/
console.c
display_banner();lib_blackfin/
board.c
checkboard(); board/stamp/
stamp.c
timer_init(); cpu/bf531/
interrupts.c
至此,u-boot的修改配置基本完成,重新编译u-boot代码,将得到的u-boot.bin通过jtag口下载到目标板,如果能够通过串口输出启动信息,表明移植基本成功。其间仍需多次修改。移植成功后可相应对功能进行增删。
μclinux的移植下载
本文选择了http://blackfin.uclinux.org中提供的μclinux-dist-ro6r2-rc2.tar.bz2作为系统使用μclinux的源代码。解压缩之后就可以进行内核配置和内核编译了,内核配置即为内核制定适当的功能。在解压缩之后的源码根目录下,执行make menuconfig或make xconfig进行配置。
其中重要的部分如下:
(1)系统cpu的选择、系统板卡的选择及设置
kernel executes from ram
cyrstal frequency 1000hz
sdram memory size in mbytes
32 sdram memory
address width 9
baud rate 57600
enable dma support
(bfin_dma_5xx)
ebiu_ambctl global control
ebiu_ambctl control
(2)系统外设选择及驱动设置
本系统外挂以太网、usb、lcd及spi falsh,使用rs232、ppi接口等,μclinux内核源文件已经包含支持blackfin系列处理器的驱动,故只需对各接口进行驱动选择,对部分外设进行驱动编写即可。主要的设置如下:
networking support(net)
device drivers
detect non-cfi amd/jedec-c 0 m p a t i b 1 e fl a s h c h i p s(mtd jedecprobe)
st mw320d compatible flashchip support(mtd_mw320d)
support for ram chips in busmapping(mtd_ram)
parallel port support(parport)
scsi device support
netw0 rk device support(netdevices)
blackfin bf53x programmableflags driver(bf533_pflags)
b1ackfin bf5xx ppi driver(bf5xx_ppi)
support for flame buffer devices(fb)
fg0506 tft lcd on uclinux(m y b f 5 3 1 s t a m p)(fb_bf531_fg0506)
support for host-side usb(usb)
其中fg0506 tft lcd onuclinux(mybf531 stamp)(fb_bf531_fg0506)为在/uclinux-dist/linux2.6.x/driver/video/下编写bf531_fg0506.c的液晶显示驱动,并改写该文件夹下的makefile和kconfig文件,将该选项编入?clinux源程序的配置选项中。
(3)操作系统内核的剪裁
analog device s blackfinembedded linux applicationconfiguration菜单下为关于linux系统应用程序的配置信息,可以添加或删除适合本系统的软件设置,应用程序等。例如,如果要在系统上使用图形界面,就需要在此部分中选择microwindows下的microwin和nano-x的相应选项,或是将qt/embedded编人μclinux源文件,再编入系统内核中。除了适合系统的特殊需要,一般此项中的内容不需修改。
全部选择完成之后,使用make进行内核编译,在images文件夹下会生成内核文件:linux.ext2、uimage.ext2、vmlinux、rootfs.ext2、rootfs.jffs2等,分别对应不同的文件系统、不同功能大小的系统。
使用串口或以太网将内核下载到板子上,启动?clinux看到欢迎界面和root:/>后,嵌入式操作系统即移植成功。
结语
经调试、修改,最终生成的内核已可以运行,并对usb、以太网、lcd有良好的支持,节约了大量设备驱动及通讯协议的编写,给多外设的采集系统提供了良好的驱动解决方案,节约了开发周期和难度。


PLC、DCS、SCADA系统通过OPC智能网关与云平台实时通讯
江西南昌明确新增网约车使用新能源汽车
碲镉汞光导器件在风云气象卫星中的应用概述
智能机器人吸尘器工作原理
三星和松下部分电视将支持HDR10+
剖析Blackfin及嵌入式ktClinux在数据采集系统中的应用
使用SOM的方法和理由
诺基亚6开卖两个月后 用户纷纷吐槽这三大缺点
什么是数字孪生技术,它的作用是什么
关于PCB线路设计的104个专业术语
楼宇智能化的特点_楼宇智能化的优缺点
算法工程师应该拥有这些职场思维
智能电网布局,你知道中国电网企业有多少?
工业设备为什么用物联网卡,它的优势是什么
华为P10“闪存门“”疏油层门“”内存门 ”事件涉嫌偷工减料?华为再度回应称已找到解决方案
四会富仕获安川电机优秀供应商奖
物联网联网平台的四大功能,支撑着物联网平台产业变革
中科晶上开启面向工业级5G产业互联网领域的全面战略合作
5G技术在科技创新的趋势发展下,正在推动行业变革
数据中心的拐点:Molex莫仕发挥 224 Gbps-PAM4 的能力