基于晶心科技Andes平台的MP3移植
- 格式:pdf
- 大小:497.14 KB
- 文档页数:5
晶心科技技术文章如何移植Linux到晶心平台AndeLinux porting on s platform发表人:沈智明,资深技术经理,晶心科技股份有限公司地址: 新竹科学工业园区力行一路1号2楼Tel:886-3-666-8300 ext. 626jimmy@………………….晶…心…科…技…新…闻…联…络…人…………………市场部 Janine徐家玲经理电话: 03-6668300 ext. 614行动: 0932-315015E-mail: Janine@Web: Fax: 886-3-6668322 2012年3月30日如何移植Linux到晶心平台沈智明,资深技术经理,晶心科技股份有限公司鉴于越来越多使用者将Linux移植到晶心平台(Andes Embedded™)上(AndesCore™ N12或N10),本文的目的在协助使用者快速、有效率的将Linux 移植到自建的FPGA板子上(CPU是AndesCore™ 的 N12或N10)。
笔者曾协助多家公司工程师进行Linux移植到晶心平台的工作,将Linux移植过程容易遭遇的问题与盲点进行实际说明,期望能对使用者有所帮助,也希望读者不吝指教提供您宝贵的意见。
在进行Linux移植时会发现,使用者的晶心平台可能会有各式各样的组合,除了CPU是使用N12或N10外,使用者对于其他的周边(如RAM,ROM,Timer…..)之搭配各有所好,为了有系统性说明Linux移植的要领,将选定一明确的硬件,软件,与开发工具(toolchain)环境做演练说明,除了让读者可以实作明了文中的叙述,当使用者的周边非原设计的硬件(用户自己的IP)时,可以运用移植的基本原则,更改希望移植IP的Linux驱动程序,其他原始码不动,逐一的将使用者的周边驱动程序移植到晶心的平台。
在Linux移植过程中,使用者须建立一基本观念,那就是整个Linux OS可分为两部分,第一部分是与硬件相关的HW dependence code,这部分的程序代码会因对应不同的硬件而造成软件部分需做不同程度的改写;第二部份是与硬件无关的generic code,这部分的程序代码与硬件无关,纯软件运作,不会因平台(Andes, X86, Arm..)的改变而有差别。
基于硬件描述语言的M P 3解码器仿真平台的搭建以及IP Core 的重用陈 艳,赵 歆,李 平(电子科技大学通信学院 四川成都 610054)摘 要:开发基于硬件描述语言的M P 3解码器,首要的问题是要搭建一个能被很好地掌握控制的仿真平台。
仿真平台包括仿真输入平台和仿真输出平台。
在仿真输入平台中,构造了2个模块,一个是用来存储M P 3音频文件的ROM 模块,另一个是控制器模块,其功能是把ROM 中的数据以串行数据流的方式送到解码器模块中去。
其中,在构造ROM 模块时,采用了IP Co re 重用。
关键词:硬件描述语言;M P 3解码器;仿真平台;IP Co re 的重用中图分类号:TN 91213 文献标识码:B 文章编号:1004373X (2004)1508202Bu ild i ng of HDL M P 3D ecoder ′s Test Bench and IP Core ReuseCH EN Yan ,ZHAO X in ,L I P ing(D epart m ent of Comm unicati on and Info r m ati on Engineering ,U ESTC ,Chengdu ,610054,Ch ina )Abstract :T he mo st i m po rtant th ing of develop ing HDL M P 3decoder is to build a test bench ,w h ich can be w ell contro lled 1T h is test bench includes input bench and output bench 1T here are tw o modules in the input bench 1O ne is a ROM ,in w h ich is the M P 3file 1T he o ther is a contro ller ,w h ich can put the M P 3data ,w h ich is in the ROM ,into M P 3decoder module 1A nd w hen building the ROM module ,reuse a ROM IP Co re 1Keywords :HDL ;M P 3decoder ;test bench ;IP Co re reuse收稿日期:20040319 用FPGA 来实现对M P 3音频格式数据的硬件解码,需要用硬件描述语言(V HDL 或V erilog HDL )编写源程M P 3音频数据流解码成PCM 数据,然后串行输出。
MP3二十款解码芯片全解析MP3二十款解码芯片全解析虽然现在芯片已经不能完全决定MP3的好坏,值与不值。
但是如果在选购MP3的时候对MP3芯片没有任何了解,那么很容易被经销商蒙混过关。
所以,选购MP3的时候不要求精通芯片功能,但是多少也要知道一些。
如今,飞利浦,Sigmatel,Telechips等还是主流的解码方案,但是芯片的性能却提升了不少。
而且三星等厂商也推出了自己的高性能解码系统。
一、飞利浦系列产地:荷兰如果一定要评出目前市场上最好的MP3解码芯片的话,那么无疑就是飞利浦芯片了。
飞利浦家族的解码芯片在业界一直以其“功能全,音质好,价格高”而著称。
飞利浦的解码芯片一般都采用的是BGA封装工艺,而国内的这方面技术相当有限,此外,由于飞利浦的解码芯片需要搭配另外的控制芯片电路协同工作,所以产品成本较高。
所以采用飞利浦解码芯片的厂商往往都定位于中高价位,如MPIO和IRIVER这两家韩国的MP3专业厂商。
这两个品牌一个最主要的共同特点就是在产品中全面采用了飞利浦的解码芯片。
因此,他们的产品拥有很高的音质和品质,成为全球MP3爱好者追逐的对象。
1、飞利浦SAA775X系列(SAA7750/7751/7752/7753)飞利浦SAA775x芯片是目前市场上MP3播放器解码芯片组中功能最全(支持CD直录),效果最好的解码芯片之一。
该解码芯片的音质表现为:低音下沉较深、中音表现出色、而相比之下高音则显得一般。
因为SAA775x中内含DSP(Digital Signal Processing,数字信号处理)和32位ARM RISC 处理器,所以能用超高集成度的单颗芯片,音频解码和语音编码等工作,并且可以加入SDMI(Secure Digital Music Initiative,安全式数字音乐)保护。
其中SAA7750内含DSP和32位ARM RISC处理器,信噪比为90dB。
该芯片兼容多段多档位EQ智能音效,支持以ADPCM格式保存语音记录、同步显示歌名和歌曲信息、Line-in 直录,此外还支持USB1.1/2.0标准,支持多重音乐格式解码。
Silicon推出调幅/调频收音机芯片系列Si473xSilicon Laboratories宣布扩充广播音频产,它将从接收输入信号到输品,增加Si473x调幅/调频收音机芯片系列。
Si473x能将调幅/调频收音机功能轻易导入消费性电子产品,例如时钟与便携式收音机、家庭音响、MP3播放机、多功能底座和移动。
Si473x是首款高度集成的调幅/调频收音机芯片出音频信号的所有功能全数集成至单颗芯片。
传统调幅/调频收音机设计由于体积大、本钱高和生产困难,使得许多高产量的小型便携式应用无法提供调幅收音机功能。
Si473x芯片只需两颗外部元器件和平方厘米的电路板空间,远少于需要50多颗元器件和10平方厘米面积的传统解决方案。
得益于先进的数字架构,Si473x大幅简化设计与生产工作,它是唯一不需要人工调校的调幅/调频收音机芯片,这能为每一个产品省下数分钟的校准时刻。
传统的调幅/调频解决方案可能需要4个时期的手动调校,Si473x那么能通过芯片内置变容器与自动校准功能支持各类天线,使得流水线的生产效率大幅提高。
Si473x提供最好的调幅与调频电台搜寻与调整能力,可减少干扰和改善收音效果。
它还拥有绝佳的收音灵敏度和频道选择性,能够收到其它调幅/调频收音机无法搜索或正确辨识的许多电台。
Si473x拥有领先市场的音质,还提供可调式软静音和其它音频加强功能。
Si4731也是唯一支持欧洲Radio Data System (RDS) 以及美国Radio Broadcast Data System (RBDS) 标准的调幅/调频收音机芯片。
这项功能可将电台和歌曲名称等信息显示在任何产品的LCD屏幕,提供给使用者类似便携式媒体播放机的视觉体验。
价格与供应时间Si4730与Si4731采用精巧的3 × 3毫米20接脚QFN封装。
目前已有样品供应。
Si4730的10,000颗采购量单价从美元起,支持RDS/RBDS 的Si4731则从美元起。
晶心科技技術文章Andes D1088在汽車ADAS之應用………………….晶…心…科…技…新…聞…聯…絡…人…………………市場與技術服務部Hsiao-Ling林筱瓴電話:03-6668300 ext.644E-mail: hllin@Web: Fax: 886-3-6668322 2016年12月06日Andes D1088 在汽車ADAS之應用沈智明,資深經理,晶心科技股份有限公司先進駕駛輔助系統(Advanced Driver Assistance Systems;ADAS)為現今IT產業發展之重要方向,是將來可以達到無人駕駛智慧車輛的技術進階過程。
ADAS 的主要功能並不是控制汽車,而是為駕駛人提供車內的工作情況與車外環境變化等相關資訊進行分析,提供預先警告可能的危險狀況,讓駕駛人提早採取因應措施,避免交通意外發生。
晶心科技的產品D1088具數位信號處理器(digital signal processor,DSP)指令,除了一般CPU指令外還多了SIMD instructions來加速ADAS系統的演算,增加ADAS產品之性能,也因此獲得客戶的認同使用晶心科技D1088開發ADAS產品。
使用D1088開發的ADAS產品包括盲點偵測(Blind-Spot Detection, BSD),前車碰撞警示(Forward-Collision Warning, FCW),車道偏移警示(Lane-Departure Warning, LDW),移動物偵測(Motion-Object Detection, MOD),倒車碰撞警示(Rear-Collision Warning, RCW),行人碰撞警示(Pedestrian-Collision Warning, PCW)及行車紀錄器。
車用電子須通過AEC-Q100(Automotive Electronics Council - Failure Mechanism Based Stress Test Qualification For Integrated Circuits)的認證,要求有別於一般消費性電子產品,本文之目的除了告訴我們的客戶(IC設計業者)D1088的優勢,也與我們的客戶一起探討車用電子與消費性電子產品間差異。
基于晶心科技Andes平台的MP3移植晶心科技 (Andes)作为亚洲首家原创性32位微处理器IP与系统芯片开发平台的设计公司,面向32位市场推出了Andes Core N9,N10,N12三个系列低功耗高性价比的32位处理器软硬核IP。
基于各系列处理器,晶心科技针对不同音频应用提供了多种解决方案。
其中包括将多种音频格式的编、解码器(开源),例如MP3、AAC、WMA、G729等移植到Andes平台上。
并且利用nds32(基于Andes Core)架构的优势和针对音频效能的扩展指令集,以及算法上的改进,对这些编解码器做了进一步的优化,使其不仅占用的空间较小而且具备了较高的运行性能。
本文以MP3解码器为例,介绍如何将madplay移植到Andes平台,以及晶心科技基于N903A处理器提供的MP3解决方案。
1.MP3简介MPEG-1 Audio Layer3(简称MP3)是一种有损音频编码方式,它利用掩蔽效应(一种心理声学模型),将脉冲编码调制(Pulse Code Modulation)音频数据中人耳听觉系统无法察觉的那部分数据去掉,使得MP3能够在音质丢失很小的情况下把音乐文件压缩到很小的程度(1:10 甚至1:12 的压缩率)。
因为其体积小、音质高的特点,MP3已经成为当今最为流行的音频格式。
madplay是目前使用较为广泛的一种MP3的解码器,下面将详细介绍如何使用Andes提供的AndeSight集成开发工具将madplay移植到Andes平台。
2.环境及软件介绍2.1系统环境:Linux:Fedora 8。
2.2开发环境:AndeSight v1.4。
AndeSight是晶心科技提供的一种基于nds32架构开发嵌入式工程的图形化的集成开发环境。
主要由AndeSight IDE, AndESLive和nds32工具集3个部分组成。
AndeSight IDE为工程师提供了各种友好的界面,包括对嵌入式工程做编辑,编译,运行,调试或者评测等等操作。
AndESLive提供了基于nds32架构的仿真器和一种图形化的虚拟SoC构建模型,它与AndeSight IDE相结合为用户提供了一个虚拟的硬件平台。
这个虚拟评估平台提供Andes自行定义ISA的多组系列32位CPU IP以及各种外围设备IP,并且支持用户自定义IP模型。
AndESLive配合AndeSight IDE不仅使得SoC设计者能在计划初期就开始软件设计、侦错、最优化等工作,并对系统架构及功能进行检验,而且使硬件工程师和软件工程师具有一样的能力去制作和修改他们各自的系统模型,可以有效的控制NRE(NonRecurring Engineering)成本,让软件工程师在拿到硬件原型之前,即可以进行软件的开发和优化。
nds32工具集提供了一套在Andes平台上开发嵌入式应用程序所需要的标准工具,例如编译器、调试器、链接器等等。
2.3交叉编译器:nds32le-linux-gcc。
nds32工具集中对应不同的Andes Core型号,不同的系统函数库以及大小端形式等条件,提供了各种对应的交叉编译器。
这里我们选用nds32le-linux-gcc。
2.4软件包:除了源码外,madplay还需要MP3的解码库libmad,以及zlib和libid3tag来正确的读取MP3头段信息。
这四个软件包都可以在开源网站上获得。
其中,madplay-0.15-1b.tar.gz、libmad-0.15.1b.tar.gz、libid3tag-0.15.1b.tar.gz可以在/project/showfiles.php?group_id=12349获取,zlib-1.2.4.tar.gz可以在/获取。
3.Madplay的移植3.1编译函数库3.1.1编译libmad进入libmad目录,首先将如下nds32架构和目标平台运行环境的信息加入到配置文件config.sub中(可加到第675行):nds32*)basic_machine=nds32-linuxos=-linux;;然后依次执行:#CC=nds32le-linux-gcc ./configure --prefix=$PREFIX/MP3_Decoder --host=nds32-linux --disable-debugging --disable-shared#make#make check#make install编译成功后,可以在$PREFIX/MP3_Decoder($PREFIX是用户设定的路径)目录下的included和lib目录里找到相应的.h文件和.a文件。
3.1.2编译zlib和libid3tag需要先编译zlib。
进入zlib目录后,依次执行:#CC=nds32le-linux-gcc ./configure --prefix=$PREFIX/MP3_Decoder#make#make install然后编译libid3tag。
先将nds32架构信息加入到文件config.sub中(方法同libmad),然后执行如下命令,编译libid3tag时需要用到编译zlib生成的头文件和库文件:#CC=nds32le-linux-gcc ./configure --prefix=$PREFIX/MP3_Decoder --disable-debugging --disable-shared CPPFLAGS="-I/tmp/MP3_Decoder/include" LDFLAGS="-L/tmp/MP3_Decoder/lib" --host=nds32-linux#make#make install同样,在编译成功后libid3tag的相关文件也保存在$PREFIX/MP3_Decoder目录下面。
3.2在AndeSight中生成madplay在进入AndeSight图形化集成开发环境之前,需要先对madplay源码中的makefile进行配置。
首先同样需要将nds32架构信息加入到config.sub文件中,然后执行如下配置:#CC=nds32le-linux-gcc ./configure --disable-debugging --disable-shared --host=nds32-linuxCPPFLAGS="-I$PREFIX/MP3_Decoder/include -lmad -lid3tag -lz" LDFLAGS="-L$PREFIX/MP3_Decoder/lib" --prefix=/Andestech/AndeSight14/ide/workspace/MP3decoder_madplay接着打开AndeSight v1.4,建立一个STD C(标准C)工程mp3decoder,并将madplay 目录下的所有文件导入工程中。
选择Project菜单栏选择Build Project一项,成功进行编译和链接后,在指定的目录下就会生成madplay的可执行文件,如图1所示。
这样madlpay就成功移植到Andes平台上了。
3.3测试与验证为了验证移植的正确性,这里我们采用在虚拟的Andes硬件平台上运行的方式,也就是在AndeSight中通过AndESLive提供的虚拟SoC平台进行仿真。
这里选用Andes_demo.vep 这个虚拟开发平台,它与真实的Andes demo开发板是一样的。
选取一首MP3格式的歌曲“test.mp3"拷贝到工程mp3decoder的目录下,然后在运行视窗的Arguments选项中加入指定输入文件和输出的文件的格式:--output=wave:PATH1/test.wav PATH2/test.mp3(输出格式还可以为.pcm)。
图2在虚拟SoC 平台上运行madplay 这里madplay 运行在虚拟开发平台的linux 环境下在虚拟开发平台上运行madplay 。
运行结束后,在工程目录下会看到“test.wav "文件,如图2所示。
这个文件可以在Windows Media Player 进行播放,这样就验证了madplay 移植到Andes 平台上的正确性。
如果希望madplay 运行在无操作系统的环境中,只需对madplay 的源代码做一些修改(处理与系统调用相关的函数),然后使用nds32le-elf-gcc 这款交叉编译器进行编译即可。
4.晶心科技在MCU 层级的mp3解决方案随着人们对于音频电子产品功能的需求越来越高,8位及16位MCU 逐渐向32位MCU 转型已经成为市场趋势。
晶心科技基于Andes Core N903A 处理器对MCU 层级的音频应用提供了全方位的解决方案,包括硬件平台和软件包支持。
图3展示了晶心科技提供的完整的音频开发平台。
图3 晶心科技提供的音频开发平台考虑到从8位MCU升级到32位带来的硬件成本的增加,晶心科技推出了N903A低功耗高性价比的32位处理器。
N903A提供了完全可配置的处理器IP核,包括可配置的I/D cache大小,I/D local memory大小,GPR数量,硬件乘法器等等。
这样,客户可以根据自己产品的需求,以最小的硬件成本获得较8位系统更为优化的系统性能。
在指令方面,N903A不仅包含了晶心科技自主知识产权的一套高效指令集,而且加入了为提高音频数据处理能力而特别设计的四十余条音频扩展指令。
另外,针对现有及可预期未来的大多数软硬件应用特性,晶心科技还提供一种16bit/32bit混合指令集形式,在提供功能之余,缩小了程序所需的内存空间,从而进一步实现降低成本的效益。
软件方面,晶心科技同样提供了全方面的支持。
包括操作系统、设备驱动、开发工具、中间件、函数库以及上层的各种应用程序。
对于MP3的编解码器,晶心科技对其代码大小做了进一步的优化,并利用nds32架构的优势以及音频扩展指令集,使其在Andes平台上运行的性能达到很高的水平。
以48KHz/128Kbps的MP3歌曲为例,晶心科技优化的madplay解码器正朝着10MHz的工作频率迈进。
表1为晶心科技优化的MP3编解码器在N903A处理器上运行的结果。
音频编解码器码流峰值(MHz)ROM(KB) RAM(KB)30 40.37 35.82MP3编码器44.1KHz128Kbps11.5 35.17 52MP3解码器48KHz128Kbps表1 晶心科技提供的MP3编解码器数据。