展讯LCD_tp_camera驱动移植

展讯LCD_tp_camera驱动移植
展讯LCD_tp_camera驱动移植

一、编译:

1、cd /home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5

ls

2、source build/envsetup.sh

lunch

3、KONKA_D7-userdebug或者P5_Russia-userdebug(通用版本)

4、kheader

5、全部编译make -j8 2>&1 | tee build.log

部分编译(改代码时)make bootloader -j8 2>&1 | tee build.log

make bootimage -j8 2>&1 | tee build.log

二、克隆:

三、下载:

1、out/target,考出pac文件,boot.img和u-boot.bin,加载pac文件,然后下载

2、每次改完代码,需要重新编译,并且加载pac文件

四、改时序:

lcd_ili9881c_mipi_1491sl_p5_qc.c里面改

五、重新编译:

重新编译完,删除

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/out/target/product/1491sl_p5_ hd/obj/u-boot64/drivers/video/sprdfb/lcd目录下的文档

六、屏的调试

1、LCD驱动初始化,各寄存器的含义。

2、通道数要对应,lan.number和0X80的值,01代表2通道,02代表3通道,03代表4通道

七、摄像头增加新型号

1、

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/vendor/sprd/modules/libcamer a/sensor中的Sprdroid.mk中增加local_src_files目录(先要把驱动文件拷过来,打开驱动文件里边的.c查看变量名称,与文件名无关,与路径有关)

2、

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/vendor/sprd/modules/libcamer a/oem2v0/src中的sensor_cfg.c中增添型号(对照已有的型号格式)

3、改完之后编译systemimage,编译过程或错误查看build.log

4、调试摄像头时,如果通信不成功,先检查是否接触不良

八、adb devices读不到

1、网上做法加设备ID

2、检查adb环境是否配置好

3、重新下载一次系统

九、adb shell

adb logcat > '/home/android/test.log' 抓取操作流程日志

十、打包

1、代码:

运行imgpac:cd /home/android/gmk/test/983x_NATIVE_6_s801

然后./imgpac(打包程序)

2、手动打包:用ReseachDownload点击packet

十一、无法对焦

1、将#define CONFIG_CAMERA_AUTOFOCUS_NOT_SUPPORT注释掉,目录为

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/vendor/sprd/modules/libcamer a/sensor/gc5025_1713_KONKA_D7

十二、新增LCD

1、在kernel和uboot中加入驱动代码.c文件

2、在驱动所在目录的Makefile中加入语句

obj-$(CONFIG_FB_LCD_JD9365_MIPI) += $(filter lcd_jd9365_mipi_%,$(CTL_LCD)).o

3、/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/u-boot64/drivers/video的sprdfb_panel.c中加:

#ifdef CONFIG_FB_LCD_JD9365_MIPI

{

.lcd_id = 0x9365,

.panel = &lcd_jd9365_mipi_spec,

},

#endif

4、/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/kernel/arch/arm/configs的deconfig中加CONFIG_FB_LCD_JD9365_MIPI=y

5、

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/device/sprd/scx35l/1491sl_p5 _hd/project中的P5_Russia.mk中改CTL_LCD

6、/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/u-boot64/include/configs 的1491SL.h中加#define CONFIG_FB_LCD_JD9365_MIPI

7、/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/kernel/drivers/video/sprdfb 的Kconfig中添加:

config FB_LCD_JD9365_MIPI

boolean "support JD9365 mipi panel"

depends on FB_SC8825 || FB_SCX35 || FB_SCX15 || FB_SCX30G || FB_SCX35L

default n

8、新加之前注意将之前的lcd屏蔽掉(deconfig和configs都要注释掉),或加在前面,以免遍历编译时出错“未找到创建规则创建所需的.o文件”

9、注意u-boot和kernel驱动代码不完全相同,分开改,以免出错“函数未定义”

10、屏不亮时,先检查是否电池没电

11、图像偏大或者点的位置与触屏不符,考虑频率密度,修改

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/device/sprd/scx35l/1491sl_p5 _hd中的system.prop中的ro.sf.lcd_density,854*480为240

12、开机白屏,检查初始化,很有可能

13、编译出错时,先检查error错误,有可能是头文件的事(直接复制过来的头文件可能有错,可参考其他lcd的代码)

14、检查out/obj,看kernel和u-boot有没有编译进去

15、

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/device/sprd/scx35l/1491sl_p5 _hd/modem_bins里放的是开机画面logo,图片的分辨率是固定的

16、很多行出现错误时,检查大括号是不是漏掉一个

十三、修改LCD读ID 部分代码

1、看规格书,ID存在哪个寄存器内

2、按照已有的格式改修代码

十四、查看LCD_id

1、adb shell进入环境

2、adb root

3、cat /proc/cmdline

十五、

1、任务:兼容10802和7701两个屏

2、新增lcd见上述步骤

3、这两个屏分辨率为854*480,为FWVGA,需在

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/u-boot64/include/configs里修改FWVGA和720p的顺序

4、出现的错误:

1)u-boot没有编译进去:按build.log先修改error,本项目出错为configs与Makefile大小写不一致

2)头文件出错

3)修改开机logo,分辨率不符

十六、修改开机动画

1、

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/device/sprd/scx35l/1491sl_p5 _hd/power中拷取两个压缩包,压缩包里是开机连续动画图片,可以替换根据分辨率

2、/home/android/gmk/test/983x_NATIVE_6_s801/device/sprd/scx35l/S801/project 对应修改密度值ro.sf.lcd_density=320 \

3、/home/android/gmk/test/983x_NATIVE_6_s801/out/target/product/S801/system删除build.prop

4、替换

/home/android/gmk/test/983x_NATIVE_6_s801/device/sprd/scx35l/S801/thirdparty/S 801G_M506/power中的压缩包用于调用

十七、出现libsepol.context_from_record: type bl229x_device is not defined错误,查找

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/device/sprd/scx35l/common/s epolicy中的file_contexts文件,改相应bl229x_device

十八、设备树

1、dts讲解:https://www.360docs.net/doc/6918391719.html,/hbk320/article/details/46844585

2、代码目录:

/home/android/gmk/test/sprd9832_6.0_Rls2_W16.35.5/kernel/arch/arm/boot/dts

十九、编译分支的deconfig

1、=m和=y的含义:

首先需要知道:obj-m = *.oobj-y = *.o

上面两者的区别在于,前者才会生成ko文件,后者只是代码编译进内核,并不生成ko文件。

生成KO文件,分两种情况:单个.c文件和多个.c文件【以展讯7730 ANDROID4.4为例】

①单个.c文件

kernel配置文件decongfig中定义:CONFIG_RUNYEE_CAMVIB=m

注意上面的m,表示作为一个模块进行编译,最后在Makefile中需要用到的编译开关。

然后再相应的源码目录中的Makefile中添加如下语句:

obj-$(CONFIG_RUNYEE_CAMVIB) := camvib.o

上面的一行的作用就是编译camvib.c的源文件,同时会生成相应的camvib.ko文件,和编译生成的camvib.o在同一目录

最后就是insmod动作了:

insmod /system/lib/modules/camvib.ko

②多个.c文件生成ko文件

kernel配置文件中定义

CONFIG_TOUCHSCREEN_FOCALTECH=m

注意上面的m,表示作为一个模块进行编译,最后在Makefile中需要用到的编译开关。

然后再相应的源码目录中的Makefile中添加如下语句:

obj-$(CONFIG_TOUCHSCREEN_FOCALTECH)+=focaltech_ts.o

focaltech_ts-objs :=focaltech.o

focaltech_ts-objs +=focaltech_ctl.o

focaltech_ts-objs +=focaltech_ex_fun.o

上面的意思就是编译生成ko文件需要三个.c文件【focaltech.c focaltech_ctl.c focaltech_ex_fun.c】

最后生成名为focaltech_ts的ko文件,注意ko文件名一定不能为focaltech。那

么在obj-m和lpc-objs中都含有focaltech.o,对make来讲会产生循环和混淆,因此也不能这样书写。

最后就是insmod动作了:

insmod /system/lib/modules/focaltech_ts.ko

二十、新增tp

我们以展讯SC7731 平台为例子,介绍Android 5.1 下TP 的移植步骤。

1.在kernel/drivers/input/touchscreen 下添加驱动文件夹gslx680/

2.修改本目录下的Makefile 编译选项

obj-$(CONFIG_TOUCHSCREEN_GSLX680) += gslx680/

3.修改Kconfig 文件

config TOUCHSCREEN_GSLX680

tristate "gslx680 touchsreen driver"

depends on I2C

help

Say Y here if you have a FOCALTECH based touchscreen

controller.

If unsure, say N.

To compile this driver as a module, choose M here: the

module will be called gslx680_ts.o

4.去平台的deconfig 文件中打开CONFIG_TOUCHSCREEN_GSLX680 宏

5.修改dts

gslX680_ts@40{

compatible = "gslX680,gslX680_ts";

reg = <0x40>;

gpios = <&d_gpio_gpio 81 0

&d_gpio_gpio 82 0>;

vdd_name = "vdd28";

virtualkeys = <130 580 80 60

373 580 80 60

560 580 80 60>;

TP_MAX_X = <1024>;

TP_MAX_Y = <600>;

};

二十一、提取驱动代码用beyond compare,可以连路径目录一起复制

展讯工具使用

展讯工具使用 1.校准工具CFT A B C D E A : 选择测试机种 B : 将所有的勾打上,记录测试数据 C : Log处可随意选择本机目录,用于存储测试的纪录。FDL处必须选择展讯正式发布给工厂的软件包中的Fdl_amd.bin文件,对于6600M平台来说,FDL不需要,NV处必须选择展讯正式发布给工厂软件包中NV_Parameters目录下的NVitem_release.prj文件; D : 校准用的项目 F : 相关的FT测试数据,在校准时将所有勾去除 2.DOWNLOAD 程序

根据不同的项目导入FDL , BOOTLOADER ,PS ,MMIRES,NV BOOTLOADER , PS ,MMI, 在DOWNLOAD 时候可以不选,FDL必须选上 地址选项PRODUCT为NAND,相关的地址与底层有关

NAND FLASH选项为SMALL PAGE REPARTITION SETTING 默认为2 。 校准数据保留,将backup calibration 打上将保留全部nv数据3.Mobile test 使用说明

Calibration 说明: 1) 做Calibration 之前,首先要确保手机进入“Calibration mode ”,如果不是,要点击 按钮①进入校准模式(目前不支持)。 2) 接着点击按钮④,连通DSP 与RF 之间的通路。 3) 下一步选择手机的工作频段,共有五种:EGSM900,DCS1800, EGSM-DCS-DUALBAND ,PCS1900,GSM850(在不同的频段arfcn,txpwr lv 有不同的数值),选择好之后点击按钮⑥即可设置好工作频段。进行了2、3步的操作后就可以进行发射或接收的操作了。 4) 点击按钮③可以开发射,它有两个参数:afc,dac 。在DCXO 下有afc,dac 两个参数, 在TCXO 下有dac 一个参数(DCXO ,TCXO 通过⑧来选择)。执行该步操作可以实现AFC 的操作。 5) 按钮②可设置发射时的factor 值。再点击按钮4就可以实现APC 的操作。 6) 按钮⑦可做接收,在这之前要先设置好RX 的各值:type,gain ind,gain val,rach ab. 在Result ⑨处显示RSSI 的值。执行该步操作可以实现AGC 的操作。 7) 选中Multi Ramp(⑤处) ,即可设置所需PA parameter 和Ramp Up Num 两个参数。 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨

展讯平台充电电路介绍

展讯通信 展讯平台充电电路介绍 p r e a d t r u m C o n f i d e n t i a l

?帮助工程师了解SC6600L 平台充电电路和充电过程; ?帮助工程师了解锂电池充电原理; p r e a d t r u m C o n f i d e n t i a l

?SC6600L 充电概述 ?SC6600L 充电电路介绍?SC6600L 充电过程介绍?SC6600L 过压保护介绍 ?充电器检测 ?锂电池充电相关介绍?Q&A p r e a d t r u m C o n f i d e n t i a l

SC6600L 芯片集成了锂电池充电管理模块,支持Adapter 充电器。其特点如下: ?简单,安全的线性充电; ?外部使用一颗低成本的PMOS+二极管器件;?充电电压为:4.75V~5.25V ; ?充电过程软件控制,充电电流可以通过软件和硬件调节;?有欠压锁定功能(UVLO );? 硬件过压,过流保护; p r e a d t r u m C o n f i d e n t i

SC6600L 芯片有UVLO 功能,当电池电压低于开启电压时,芯片是不会工 作的。如下图所示: p r e d t r u m C o n f i d e n t i

?SC6600L 充电概述 ?SC6600L 充电电路介绍?SC6600L 充电过程介绍?SC6600L 过压保护介绍 ?充电器检测 ?锂电池充电相关介绍?Q&A p r e a d t r u m C o n f i d e n t i a l

将驱动移植到64位Windows操作系统

将驱动移植到64位Windows操作系统 x64位操作系统和x32位操作系统的最大区别就是内存寻址方式的不同。而64位操作系统不支持32位的驱动程序,因为驱动程序和windows内核同处于一个地址空间中。这是移植32位驱动到64位驱动的最大原因。当然,64位驱动程序可以使用更大的分页内存,非分页内存及系统缓存。而且,你的设备从此就支持64位windows操作系统了。 1.在X64下的驱动程序安装 除了要把应用程序的32位驱动程序变成64位程序之外,驱动的安装程序和其它配置文件同样需要修改。也就是说,对于要在x64上运行的32位程序,它所依赖的驱动仍然需要是64位的。这些相关程序包括inf文件,device installers, class installers和co-installers。相关资料可查看MSDN Libarary DDK:Porting Your Driver to 64-Bit Windows。 所以,要改造应用程序的安装程序。方法是,让32位版的驱动安装为缺省安装选项,即用户插入安装光盘之后,依然运行32位安装程序。但当程序调用UpdateDriverForPlugAndPlayDevices返回值为ERROR_IN_WOW64时,这说明该安装程序正运行在64位Windows环境中。此时,这个安装程序应该调用CreateProcess函数来启动64位的安装进程。这个64位的安装进程通过调用64位驱动目录下的inf文件进行驱动安装。 2.驱动要支持32位IOCTL 某些IOCTL可能包含含有指针的结构,所以,要特别小心的区别对待它,必须根据被调用者解析结构或者输出结构。 有三种办法可以解决这个问题: 1.尽量避免使用IOCTL传递包含有指针的结构; 2.通过API IoIs32bitProcess()来判断上层调用者的程序类型; 3.在64位程序中采用新的IOCTL命令; 例子: IOCTL structure in header file typedef struct _IOCTL_PARAMETERS {

展讯LCD接口使用说明

LCD 接口使用说明 版本: 1.0.0 SW-BASE-UG-0026 2004-06-09 D2 https://www.360docs.net/doc/6918391719.html,

修订历史 版本日期作者审核说明1.0.0 2004-06-09 Jim.zhang Draft

重要声明 版权声明 版权所有 ? 2004, 展讯通信有限公司,保留所有权利。 商标声明 展讯通信有限公司和展讯通信有限公司的产品是展讯通信有限公司专有。在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。 不作保证声明 展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。 保密声明 本文档(包括任何附件)包含的信息是保密信息。接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。

目录 1介绍 (5) 1.1范围 (5) 1.2参考文档 (5) 1.3缩写和定义 (5) 2概述 (6) 2.1文件组织 (6) 2.2LCD屏幕坐标 (6) 2.3LCD操作概述 (6) 3接口函数说明 (7) 3.1LCD硬件初始化 (7) 3.2关闭LCD (7) 3.3获取LCD基本信息 (7) 3.4刷新LCD (8) 3.5LCD全屏刷新 (9) 3.6进入/退出睡眠 (9) 3.7调节LCD的对比度 (10) 4附录 (11) 4.1数据结构 (11) 4.1.1LCD信息结构 LCD_INFO_T (11) 4.1.2LCD ID类型 LCD_ID_E (11) 4.1.3LCD错误类型 ERR_LCD_E (12)

展讯IMEI写号使用说明书04

深圳六虹科技有限公司 展讯平台扫描作业说明书 该IMEI工具启动后,在主界面上方从左至右有三个下拉框可供设置,左边的Port可以设置写IMEI时所使用的串口。中间的是设置写IMEI的方式,一种为META模式,需要database文件,该文件必须与手机软件一一对应;另一种为AT模式,不需要database文件。默认为AT模式,可以写所有MTK的手机。右边为选择写双卡双待手机的IMEI号码,单卡和双卡单待请选择IMEI1,因为这些手机只有一个IMEI号码,选其他会出错。双卡双待手机可选的有IMEI1;IMEI2;IMEI1&IMEI2;IMEI1=IMEI2。不同的选择会有不同的效果: ●IMEI1:写单待手机的IMEI或者只写双待手机的第一个IMEI号码。 ●IMEI2:只写双待手机的第二个IMEI号码。 ●IMEI1&IMEI2:写双待手机的两个IMEI号码,需要输入两个IMEI号码。先输入 第一个IMEI号码,然后再输入第二个IMEI号码,程序将两个IMEI写入手机。 ●IMEI1=IMEI2:写双待手机的两个IMEI号码,但是只需要写输入一个IMEI号码, 程序将两个IMEI号码设置为相同,然后写入手机。 注意:当双待手机写入的两个IMEI相同时,则在*#06#界面只会显示一个IMEI号 码。当两个IMEI不同时,才会显示两个不同的IMEI号码。 单待手机请在Dual IMEI选择IMEI1,双待手机如果需要显示两个不同的IMEI,选择“IMEI1&IMEI2”,并在写IMEI时输入两个不同的IMEI,这样手机会显示两个不同的IMEI。双待手机如果只需要显示一个IMEI,请选择“IMEI1=IMEI2”,这样写IMEI时只需要输入一个IMEI并且手机只会显示一个IMEI。

MTK,展讯,高通处理器介绍

1---MTK: MTK在移动领域CPU目前可以分为3个系列:1、MT62xx系列(功能手机);2、MT65xx系列(智能手机);3、MT83xx系列(平板)。 MT62xx系列,先看下图: 该系列属于功能手机产品线,主要采用ARM7、ARM9、ARM11三种架构,ARMv5T、ARMv6L指令集,这些功能手机芯片并不羸弱,应该说很有特点。有的性能规格甚至操过了09年顶级智能机的性能水准,如:MT6276。有的在省电造诣上独步天下:如MT6250,耗电仅为MT8389的1/10。目前的MTK比较新的安卓智能芯片也普遍延续着功能手机设计优势。注意,在MT62xx系列中,并非CPU架构越先进主频越高,手机越好,原因很简单,功能手机和智能机不同,追求的并非只是单纯的性能,而是功能、速度、价格及待机等特性的结合体,所以即便是MTK最低端的功能机都有着全能的心态,MTK可以实现用规格较低的硬件,做出很全面的机子。比如,ARM7架构的MT6250,虽然主频只有260MHz但可以在上面搭载智能化的Nucleus3.2.2系统,可以实现类似智能机的花俏界面,类似安卓的智能软件扩展和功能手机的超长待机,这些功能原本需要ARM11处理器才能完成的功能,而如今在ARM7上都可以实现了,用ARM7的好处非常明显,芯片授权费低廉,辐射最低,功耗超低,代表机型:联想MA309。在ARM9架构上MTK也有发力,比如MT6268,在246MHz的频率下就能处理联通3G的高额网络吞吐数据,WIFI数据等,代表机型:联想I62、P717、P650WG。ARM11的MT6276处理器造出来的功能机,几乎和智能机无异了,可以实现类似智能机的软件扩展和全3D界面,代表机型有:联想概念机ZK990。四两拨千斤是MTK功能手机芯片的特色。MTK功能手机的卖点不在于硬件是否强大,系统占主导地位,系统功能越多,功能越全面则手机越强,硬件却成为了附属品。不追求顶级性能,但要做全面,这一特性已经延续到智能平台上了,用MTK智能机的朋友往往会发现,它们性能并不是最强,反而很追求细节功能,比如超长待机(省电),比如外部接驳能力(USB-OTG),裸眼3D(英特图3D显示技术)等。MTK是很聪明的,在能保证和高通几乎一致的用户体验前提下,也就是在保证系统基本不卡,顺滑的前提下,追求一些附加功能,来产生卖点,这些启发一般都是来自功能机的,因为功能机是更加追求功能,在智能机上也追求功能,是寻求安卓系统差异化的有力表现。就以超长待机这一卖点打个比方,联想主打超长待机的P系列手机:P70(MT6573)、P700(MT6575)、P700i(MT6577)、P770(MT6577T)、P780(MT6589)整个系列全被MTK占领了,高通没

展讯平台软件调试介绍图文..doc

展讯平台软件调试介绍Spreadtrum 7/21/2009 培训目的 ?能够使用展讯提供的调试工具对开发中的问题进行调试 ?能够分析几种常见ASSERT 主要内容

展讯调试工具简介调试方法 展讯调试工具简介主要的调试工具有: ?Dloader ?NVEditor ?Channel Server ?Logel ?Phone Tester ?DSP Log Dloader(1 功能:下载程序

设置界面: 双击可以选择下载文件路径 选择端口 选择项目 选择下载速率 制作打包文件 选择是否下载 Nand Flash下载配置: 大小页选择分区策略选择分区策略?始终分区 ?出现不兼容分区

时停止下载 ?出现不兼容分区,使用Flash中原有分区进行下载?出现不兼容分区,使用FDL中的分区方式进行分区注:此配置项只对NAND FLASH有效 备份信息配置: 将NV保存到本地 选择需要保留的信息 正在下载: 下载成功: 下载失败: Dloader(4

打包文件特别说明: 展讯升级工具中使用打包文件来进行升级操作,打包文件中不仅包含了所有的下载文件,还包含了下载项目的地址信息,这样可以降低产线升级工具配置出错的可能性,同时简化了操作。 打包文件的制作方法:DloadeR 在配置好所有的配置项后,点击左图中的按钮,然后按照提示即可完成打包文件的制作。 点击这个按钮 进行打包操作 展讯调试工具简介 ?Downloader ?NVEditor ?Channel Server ?Logel ?Phone Tester

?DSP Log 功能: ?对fixed NV参数进行读取,编辑,保存,下载?擦除NV ?从手机中读出NV Item

展讯智能平台简介(6820。6825。6825C。7710)

展讯智能平台简介2013.9.13

SC6820:中低端GSM智能机(GSM/GPRS/EDGE) SC6820中低端GSM智能机(GSM/GPRS/EDGE) SC8810:中低端TD智能机(TD-SCDMA/HSDPA/HSUPA and GSM/GPRS/EDGE) 主要参数: ARM C t A532bit RISC t1GH ?ARM Cortex A5 32-bit RISC processor up to 1GHz ?H.264 decoder and MPEG4/H.263/JPEG codec engines S t i i t5M i l ?Support image sensor sizes up to 5M pixels ?Typical image sizes up to WVGA(800x480),FWVGA(854x480) 131314454b ll05b ll it h LFBGA k ?13mm x13mm x1.4mm ,454 balls,0.5mm ball pitch, LFBGA package

SC6825:中高端GSM智能机(GSM/GPRS/EDGE) SC6825中高端GSM智能机(GSM/GPRS/EDGE) SC8825:中高端TD智能机(TD-SCDMA/HSDPA/HSUPA and GSM/GPRS/EDGE) 主要参数: ARM C t A532bit RISC d l t1GH ?ARM Cortex A5 32-bit RISC dual-core processor ,up to 1GHz ?H.264 decoder and MPEG4/H.263/JPEG codec engines S t i i t8M i l ?Support image sensor sizes up to 8M pixels ?Typical image sizes up to qHD(960x540) 1211210847517b ll04b ll it h2L FC ?12.1mm x12.1mm x0.847mm ,517 balls,0.4mm ball pitch ,2L FC package

展讯平台窗口创建流程

窗口创建流程简介 窗口在展讯平台中是一个至关重要的概念,与Windows操作系统相类似的,窗口在展讯平台中就是最终呈现给用户的一个应用程序。在这里,我们可以把窗口看作一个应用程序,因为,它不但能够显示内容给用户,而且更为重要的是,窗口能够处理系统中所有的内部消息及发送到该窗口的外部消息。 一个应用程序是由一个或多个窗口构成的,例如Idle窗口只包含一个窗口,而短消息模块包含多个窗口。应用程序都是通过窗口显示给用户,并最终实现人机交互。 下面我们来看下展讯平台的窗口创建流程。 图1动态窗口创建流程

图2 静态窗口创建流程 窗口分为静态窗口和动态窗口,静态窗口会在宏WINDOW_TABLE中先定义好窗口的属性,而动态窗口是在实现时动态创建窗口属性。具体如何选择,根据应用的需要来选择。 展讯平台为用户提供了创建静态窗口和动态窗口的接口,分别为函数MMK_CreateWin和函数MMK_CreateWindow,具体如何创建窗口,可以参考展讯文档,这里主要讲述调用创建窗口接口后的流程。 通过上面两个流程图,我们可以看到静态窗口和动态窗口的创建会调用几个相同的函数MMK_AddTreeNode、TreeNodeNew和MMK_WindowTreeNodeConstruct。这三个函数是为了创建窗口节点,窗口是通过树来管理的,如下图:

图3 窗口管理 展讯平台里退出当前窗口时,系统会执行注销当前窗口的操作,用树管理窗口的好处就是这时候系统会自动进入父窗口,从而达到用户希望的效果。 创建完窗口节点后,会创建窗口的一些基本属性,如背景、显示区域等,这个时候我们看不到其它的属性,如状态栏、菜单、编辑框等等。 静态窗口和动态窗口在这之后就会出现一些区别,静态窗口会在后面继续创建窗口其它的属性,这些属性在先前宏WINDOW_TABLE中已经定义好的,比如状态栏、标题栏、菜单栏、soft控件等。这些属性的创建是在以下函数中进行的。PUBLIC BOOLEAN MMK_ParseWinTab( MMI_HANDLE_T win_handle, uint32 *win_tab_ptr ) { … value_ptr = win_tab_ptr; while ((END_WIN != *value_ptr) && (CAF_END_WIN != *value_ptr)) { ins = *value_ptr; value_ptr++; if ((FIRST_PARSE <= ins) && (END_WIN > ins)) { result = MMKParseFunc[ins - FIRST_PARSE](win_handle,&value_ptr);//调用函数表中的函数来创建窗口的其它属性 } else if ((CHILD_CTRL_FIRST <= ins) && (LAST_CHILD > ins)) { result = GUIFORM_ParseChild((ins - CHILD_CTRL_FIRST),win_handle,&value_ptr); } else if ((CAF_PARSEWIN_FIRST <= ins) && (CAF_PARSEWIN_MAX > ins)) { result = CAFParseFunc[ins - CAF_PARSEWIN_FIRST](win_handle,&value_ptr); } else {

展讯耦合工具操作说明

目录 1 安装GPIB卡驱动 (2) 2 安装USB驱动 (2) 3 系统设置 (2) 4 端口及仪器设置 (3) USB端口设置 (3) 测试仪器设置 (4) 线损设置 (4) 电源设置 (6) 5操作步骤 (6)

1 安装GPIB卡驱动 略,请参考《MTK平台耦合测试工具使用说明》中“4.1 安装NI Visa GPIB卡驱动”章节 2 安装USB驱动 略,和展讯写号工具的USB驱动安装方法一致 3 系统设置 1)点击进去系统设置界面,如下图。 各项设置保持与下图一致。

4 端口及仪器设置 点击进入设置界面,如下图

USB端口设置与下图保持一致 测试仪器设置 根据实际情况设置 1)选择仪器类型

-- 根据实际情况选择测试仪器(其中:HP8960表示安捷伦8960综测仪)2)选择GPIB卡类型 -- 目前工厂大部分为NI GPIB类型,需要根据实际GPIB卡类型选择3)设置仪器的GPIB卡地址 -- 默认选择0即可 -- 与测试仪器中的GPIB保持一致 线损设置 点击进入线损设置界面 目前我司GSM项目只测试EGSM 和DCS 这两个频段,GSM+WCDMA项目测试EGSM 和DCS,和WCDMA Band I。下面介绍EGSM,DCS和WCDMA Band I线损的设置 1)EGSM

-- 根据实际情况设置,AG8960仪器设置为负数,其他仪器设置为正数,并且TX 和RX都设置成一样即可 2)DCS -- 根据实际情况设置,AG8960仪器设置为负数,其他仪器设置为正数,并且TX 和RX都设置成一样即可 3)WCDMA Band I --根据实际情况设置,AG8960仪器设置为负数,其他仪器设置为正数,并且TX 和RX都设置成一样即可 注意:线损的设置需要根据手机呼叫仪器,在耦合板上寻找最合适的位置。然后通过计算得到实际的线损。并且把合适的位置固定下来。 EGSM PCL5的目标功率为32.5 dBm DCS PCL0的目标功率为29.5 dBm WCDMA BAND I 的最大功率为23 dbm 电源设置 不用使用电源,可以忽略,不用管

u(boot中NANDflash的MTD驱动移植)-

u(boot中NANDflash的MTD驱动移植)- u-boot u-boot中的“与非”闪存的MTD驱动程序迁移移植了linux中的MTD 驱动程序源代码,以支持“与非”闪存擦除、刻录写入和读取驱动程序内存技术设备内存技术设备是Linux的一个子系统,用于访问闪存设备MTD的主要目的是简化新存储设备的驱动,并提供通用接口功能。MTD驱动可以支持CFI接口的非闪存驱动和非闪存驱动。众所周知,“与非”闪存的访问接口不像“非”闪存那样提供标准的CFI访问接口,但“与非”闪存制造商已经对不同品牌和型号的“与非”闪存芯片的访问接口制定了一些常规规定,如命令字、地址序列、命令序列、坏块标记位置、oob区域格式等。 值得注意的是,在工艺方面有两种类型的“与非”闪存:MLC和SLCMLC和SLC属于两种不同类型的NAND闪存SLC的全称是单级单元,即单级单元闪存,而MLC的全称是多级单元,即多级单元闪存。它们的区别在于,SLC的每个单元只能存储一位数据,而MLC 的每个单元只能存储两位数据,MLC的数据密度是SLC的两倍。就页容量而言,还有两种类型的与非:大页与非闪存(例如HY27UF082G2B)和小页与非闪存(例如K9F1G08U0A)这两种类型在页面容量、命令序列、地址序列、页面内访问和坏块识别方面非常不同,并且遵循不同的约定,因此在移植驱动程序时应该特别注意。在下,以大页面NAND flash: HY27UF082G2B为例,介绍NAND flash 的一些基本情况,然后介绍MTD驱动程序的基本结构和流程分析。

最后,介绍了在u-boot中迁移MTD驱动程序的详细步骤: 3 . 4 . 1)nandflash的一些基本信息 fl2400开发板上的NAND Flash芯片型号是现代HY27UF082G2B。英特尔于1988年首次开发了或非闪存技术。它最重要的特点是支持片上执行,彻底改变了EPROM和EEPROM主宰非易失性闪存世界的局面。然后,在1989年,东芝发布了NAND闪存结构,它具有较低的单位成本、较高的容量,并且可以像磁盘一样通过接口轻松升级。“或非”闪存更适合存储少量的关键代码和数据,而“与非”闪存更适合存储大量的高密度数据。 下表说明了非闪存与非闪存的区别:非闪存非闪存性能项目的容量通常为1~4MB,片上支持的最大容量为32MB 8MB~512MB。它可以直接在芯片上启动。它不受支持,需要驱动读取。只有三星芯片支持步进式引导加载器技术,其他芯片必须配备norflash以启动具有较高可靠性、较低位反转概率、常见位反转的引导加载器,并且必须采取验证措施。ECC椭圆曲线算法被推荐用于错误检查和恢复,这导致1/10的非闪存使得非闪存的管理和驱动程序写入更加复杂。存取接口与随机存取存储器和可编程只读存储器相同。地址线地址、数据和命令通过每个使能引脚区和输入/输出线与数据线分开。访问接口可分为地址、数据和命令以及串行访问。随机存取8K-64K块大小(擦除64K~128K单位)必须按顺序存取。擦除时间为5S,慢3毫秒,快速读写速度慢。快速读取,快速读取,刻录和写入可以快速擦除10 ~ 100,000次和100 ~ 100万次。主要用途保存代码和关键数据保存大

USB驱动移植教程

USB驱动移植教程 一.USB驱动框架 在Linux系统中,提供了主机侧和设备侧视角的USB驱动框架,这里,仅仅讲解主机侧角度看到的USB驱动框架。 从主机侧的角度而言,需要编写的USB驱动程序包括主机控制器驱动和设备驱动两类。USB主机控制器驱动程序控 制插入其中的USB设备,而USB设备驱动程序控制该设备如何作为设备与主机通信。在USB主机控制器驱动和USB 设备驱动之间还有一层叫USB核心层。USB核心负责USB驱动管理和协议处理工作,它通过定义一些数据结构、宏 和功能函数,向上为USB设备驱动提供编程接口,向下为USB主机控制器驱动提供编程接口;通过全局变量维护整个 系统的USB设备信息,完成设备热插拔控制、总线数据传输控制等。说了那么多,无图无真相啊~~

Linux USB主机侧驱动总体框架 二.USB驱动移植步骤 1.S5PV210主机控制驱动的移植 USB主机控制器有3种规范,UHCI(Universal Host Controller Interface),这种规范主要是Intel、Via芯片公司提供支 持PC主板的;OHCI(Open Host Controller Interface),这种规范是微软提出来的,主要应用在非PC系统上的嵌入式 领域上的USB芯片;EHCI(Enhanced Host Controller Interface),这种后来为提高USB速度而提出的规范,它支持 最高速度为480Mbps。 在《S5PV210_UM_REV1.1》手册上搜索OHCI关键词,会发现下面一段话 这表明S5PV210这款CPU支持一个USB主机接口,同时支持EHCI和OHCI这两种规范,支持USB1.1和USB2.0规范,支持最高的外设传输速率为480Mbps。注意了,它并不支持USB3.0规范的USB设备,所以做测试的时候,千万不要拿USB3.0规范的USB设备去测试。 2.1移植ohci-s5p驱动 打开内核目录:driversusbhost,发现Linux系统提供了大量的主机控制器驱动,找遍所有平台,都没有找到ohci-s5p.c源码。很遗憾,3.8的内核没有提供S5PV210的USB HOST控制器驱动程序。最好验证有没有提供的办法就是, 烧写网蜂提供的第二版的uImage进去,然后找个U盘、或者鼠标插入Webee210开发板的USB HOST接口,看看串 口有没有打印什么信息,结果是不会有任何反应的。既然没有提供,这就需要我们自己来编写了,这下不好办了吧?

展讯平台Trace工具使用

展讯平台Trace 工具使用 对于专业的测试人员,测试应该始终接上log 线进行测试,这样就会尽可能保留出错时候的信息,这些信息不一定对于每一类的bug 都有用,但对于一些难重现的问题有可能这样的习惯就记录下了一些重要的Debug 信息,给软件人员解决问题极大的帮助。 测试人员遇到ASSERT 的时候,一定要尽可能详细的记录下操作步骤,测试此问题的重现概率,同时记录下全部的ASSERT 信息,关于ASSERT 信息详见本文档3.2.1。 需要注意的是,测试人员一定要用对应版本的ChannelServer 和log 工具进行测试,否则会导致底层的一些消息的解析不正确,给解决一些和底层有关的bug 带来困难。 1、ChannelServer 的设置使用 ? 运行ChannelServer.exe ? 点击右下角托盘中的ChannelServer 小图标 ? 在弹出的对话框中的进行配置(成功后,小图标变绿色) 图一 2、Logel –使用说明 ? 选择Server — IP Setting 配置ChannelServer 的IP 地址和端口 ――和ChannelServer 中的设置保持一致(一般不需要修改) ? 连结到ChannelServer ,并开始记录 ――需要先运行ChannelServer 以下为刚开始启动Logel 工具的界面:

图二 以下为正在抓Trace 信息的界面: 图三 测试版本一定要用debug 版本,release 版本遇到assert 会自动重启,debug 版本会断在程序assert 的地方,这样可以获得assert 时的现场信息,以便于debug 。当然,重要版本根据情况也应该同时用release 版本做一些各个功能模块的自动重启的测试,电流测试等,以保证release 版本也没有问题。 测试过程中遇到assert ,不要拔下电池,打开ChanelServer.exe 和Logel.exe , 连上手机,选择logel 里面菜单 Assert / Open Assert Frame , 打开一个调试窗口,在此窗口下输入0,会出现了下图所示的信息(如果是测试的时候连着log ,此窗口会自动弹出):

展讯6800H平台 application notes

SC6800H平台 application notes (基于MOCOR_10A.W11.24版本) 修订历史

目录 1版本信息 (6) 使用版本注意事项 (6) 2总工程中宏开关说明 (7) RELEASE_INFO (7) TRACE_INFO_SUPPORT (7) FONT_TYPE_SUPPORT (7) MMI_MULTI_GREEN_KEY (7) MMI_MULTI_SIM_SYS (8) MULTI_SIM_SYS_QUAD_TO (8) SIM_PLUG_IN_SUPPORT (8) GPIO_SIMULATE_SPI_SUPPORT (8) GPIO_SPI_SUPPORT (8) KEYPAD_TYPE (9) QWERTY_KEYPAD (9) TOUCHPANEL_TYPE (9) CAP_TP_SUPPORT (10) TOUCH_PANEL_HWICON_SUPPORT (10) BB_DRAM_TYPE (10) LCD_FMARK_SUPPORT (10) MMI_RES_DIR (11) MMI_RES_ORIENT (11) MAINLCD_DEV_SIZE (11) MAINLCD_SIZE (11) MAINLCD_LOGIC_ANGLE (11) SUBLCD_DEV_SIZE (12) SUBLCD_LOGIC_ANGLE (12) SUBLCD_SIZE (12) LCD_SLIDE_SUPPORT (12) LCD_SLIDE_SIMU (12) MAIN_LCD_DISPLAY_LAYER_NUM (12) SUB_LCD_DISPLAY_LAYER_NUM (13) DISPLAY_PIXELDEPTH_MAX (13) SPECIAL_EFFECT_ICON_SIZE (13) PRELOAD_SUPPORT (14) UI_P3D_SUPPORT (14) MMI_PUBWIN_ANIM_SUPPORT (14) MMIWIDGET_SUPPORT (14) FM_SUPPORT (14) TTS_SUPPORT (15) MV_SUPPORT (15) ASP_SUPPORT (15) MULTI_THEME_SUPPORT (15) PB_SEARCH_SURPPORT (15) HOME_LOCATION_INQUIRE_SUPPORT (15) ATV_SUPPORT (16) ATV_TYPE (16) CMMB_SUPPORT (16) MBBMS_SUPPORT (16) CMMB_DAC_TYPE (16)

S3C2410 下LCD 驱动程序移植及GUI 程序编写

S3C2410下LCD驱动程序移植 及GUI程序编写 Write by llg 著作权所有:刘利国 如转载请告知作者 laoliu@https://www.360docs.net/doc/6918391719.html, 并注明出处 https://www.360docs.net/doc/6918391719.html, 1.为了不让大家觉枯燥,让朋友们更好的理解,我以一个实例来叙述S3C2410下一个驱动 程序的编写(本文的初始化源码以华恒公司提供的s3c2410fb.c为基础)及简单的GUI 程序的编写。 2.拿到一块LCD,首先要将LCD的各个控制线与S3C2410的LCD控制信号相接,当然, 电源也一定要接入了,否则不亮可别找我。另外需要注意以下几点: 1)背光:对于大部分的彩色LCD一定要接背光,我们才能看到屏上的内容; 2)控制信号:不同的LCD厂商对于控制信号有不同的叫法,S3C2410芯片手册也给出了一个信号的多个名称(图一),这就要看你们硬件工程师的功底了, 图一 S3C2410手册上给出的控制信号的名称及解释 这里我做一个简单的介绍: ?VFRAME:LCD控制器和LCD驱动器之间的帧同步信号。该信号告诉LCD 屏的新的一帧开始了。LCD控制器在一个完整帧显示完成后立即插入一个 VFRAME信号,开始新一帧的显示; ?VLINE:LCD控制器和LCD驱动器之间的线同步脉冲信号,该信号用于LCD 驱动器将水平线(行)移位寄存器的内容传送给LCD屏显示。LCD控制器在 整个水平线(整行)数据移入LCD驱动器后,插入一个VLINE信号; ?VCLK:LCD控制器和LCD驱动器之间的像素时钟信号,由LCD控制器送出的数据在VCLK的上升沿处送出,在VCLK的下降沿处被LCD驱动器采样; ?VM:LCD驱动器的AC信号。VM信号被LCD驱动器用于改变行和列的电压极性,从而控制像素点的显示或熄灭。VM信号可以与每个帧同步,也可以与 可变数量的VLINE信号同步。 3)数据线:也就是我们说的RGB信号线,S3C2410芯片手册上都有详细的说明,由于篇幅关系,在此不一一摘录,不过需要与硬件工程是配合的是他采用了哪种接线 方法,24位16位或其它。对于16位TFT屏又有两种方式,在写驱动前你要清楚

RTOS设备驱动向嵌人式Linux的移植

RTOS设备驱动向嵌人式Linux的移植 ——By Bill Weinberg,MontaVista Software,Inc. Linux暴风雨般占领了嵌入式系统市场。分析家指出,大约有1/3到1/2的32/64位新的嵌入式系统设计采用了Linux。嵌入式Linux已经在很多应用领域显示出优势,比如SOHO家庭网络和成像/多功能外设。在(NAS/SAN)存储,家庭数字娱乐(HDTV/PVR/DVR/STB),和手持设备/无线设备,特别是数字移动电话更获得大幅度发展。 嵌入式Linux新应用不会凭空从开发者的头脑中冒出来,大部分项目都是由成千上万行,甚至数百万行的代码组成。成千上百的嵌入式项目已经成功地将现有的其它平台的代码移植到Linux下,比如Wind River VxWorks和pSOS,VRTX,Nucleus和其它RTOS。这些移植工作有着重要的价值和现实意义。 到目前为止,大多数关于移植已有的RTOS应用到嵌入式Linux的文献,关注RTOS接口(API)、任务、调度模式以及怎样将他们映射到相应得用户空间去。同样重要的是,在I/O调用密集的嵌入式程序中如何将RTOS的硬件接口代码移植到更加规范的Linux设备驱动程序中去。 本文将概述几种常用的经常出现于现有嵌入式应用中的内存映射I/O方法。它们涵盖的范围从对中断服务例程的特殊使用及用户线程对硬件访问到出现于有些ROTS中的半规范化驱动程序模型。这对于移植RTOS代码到规范化的Linux设备启动程序具有一定启发作用,并且介绍了一些移植方法。特别地,本文会重点讨论RTOS和Linux中的内存映射,基于I/O调度队列的移植,将RTOS I/O重定义到Linux下的驱动程序和守护进程里。 RTOS I/O概念 “不规范”是描述大多数RTOS系统I/O的最佳词语。多数RTOS是针对较早的无MMU的CPU 而设计,所以忽略了内存管理部分,即使当MMU问世后也是这样:不区分物理地址和逻辑地址。大多数RTOS还全部运行在特权模式,虽然表面上看来是增强了性能。全部的RTOS应用和系统代码都能够访问整个地址空间、内存映射过的设备、以及其他I/O操作。这样,即使存在差别,也是很难把RTOS应用程序代码同驱动程序代码区分开来。 不规范的结构导致了I/O实现的特殊性。在很多情况下,缺乏设备驱动程序模型的认同。根据这种无层次的特性,回顾一下基于RTOS软件中使用的一些重要概念和习惯用法非常有指导意义。 内嵌的内存访问 上个世纪八十年代中期商业化的RTOS产品中,多数嵌入式软件都有一个对执行时间有严格需求的,采用I/O查询和中断服务例程的大循环。开发人员在项目采用RTOS和执行程序,主要为了加强并行性和多任务同步,绕开其它有碍实现该目标的程序结构。这样,即使RTOS提供了I/O调用形式化方法,嵌入式程序员继续使用直接的I/O操作: 1#define DATA_REGISTER0xF00000F5

CFT工具使用说明(综测展讯)

CFT工具使用说明 1.引言 (2) 2.概述 (2) 2.1设备 (2) 2.2功能 (2) 2.3设备连接图 (3) 3.主界面 (3) 4.参数配置 (4) 4.1设备配置 (4) 4.2系统设置 (5) 4.3A DV ANCE S ETTING(高级设置) (6) 4.4运行测试 (6) 5.常见的问题 (9)

1.引言 校准的目的: 现在生产的相同型号手机虽然使用都是相同器件,但相同器件还是有的一定的偏差,由此组合的手机就必然存在着差异,这差异必须在一定的范围,超出了就视为手机不良。因此校准的目的就是通过调整软件参数来补偿硬件差异,使手机性能指标符合国标。 终测的目的: 终测是对于校准的检查,因为校准是对各指标的分别校准,并不检测对其他指标的影响所以校准通过的手机并不能肯定它是良品,只有通过终测检验合格的才算是。 2.概述 2.1设备 综测仪:HP8960 测试仪(GSM频段) Sp6010 测试仪(TD_SCDMA频段) 程控电源:Agilent[663XX] 射频连接线、串口线 2.2功能 本软件支持以下功能: ●ADC校准电压校准 ●AFC校准自动频率控制 ●APC校准自动功率控制 ●AGC校准自动增益控制 ●Final test 终测

2.3设备连接图 DUT:Device Under Test(待测设备) 3.主界面 点击图标,运行CFT.exe,进入应用程序主界面,如下图:

4.参数配置 4.1 设备配置 在CFT主界面上,选Configure(配置) ,Port &instrucments(通信端口和仪器设置),进入通信端口和仪器设置界面: https://www.360docs.net/doc/6918391719.html,m.Port 配置串口 Diag.Port.baudrate 配置波特率 Instrument Type 综测仪类型 GPIB Addr 仪器GPIB地址 Dcs Type 稳压源类型 Voltage 稳压源输出电压值 仪器类型设置【仪器的GPIB地址可以人为设置,不是固定的】 仪器类型GPIB卡地址GPIB地址 HP8960 0 20 SP6010 0 14 可设置如下选项: 正确的通讯端口和端口波特率 校准GSM使用综测仪HP8960和正确的GPIB地址(按仪器上的SYSTEM CONFIG按钮查看GPIBaddress的值) 校准TD-SCDMA使用综测仪SP6010和正确的GPIB地址(按仪器上的CONFIG查看GPIB address 的值) 程控电源项是可选的,校准ADC时一定要打钩,并配置正确的GPIB地址

展讯 开机流程介绍

L平台开机流程介绍 展讯通信主讲人:Nick.Zhao

d t r u m C o n f i d e n t i a l 开机的条件 ?VBAT is high. ?PBINT is high ?CHINT is high ?ALARM INT S p r e a

S p r e a d t r u m C o n f i d e n t i a l ROM Code 软件流程 Start Initialize the IRAM, Pin, UART and Keypad USB Bootstrap Pin is Set? Key(0,0) is Pressed?Receive two 0x7e?Remap and Jump to 0x0Send the Version String and go to USB Boot Mode Send the Version String and go to UartBoot Mode Yes No No No Yes Yes

d t r u m C o n f i d e n t i a l Before __main ?Code from tx_illdb.s ?Work flow –Disable interrupt –Abnormal reset check –Initialize clock and EMC access timing for nor platform –Enter SVC mode and setup SVC stack pointer –BL PM_Init –B__main S p r e a

PSO工具箱使用简介修订稿

P S O工具箱使用简介 WEIHUA system office room 【WEIHUA 16H-WEIHUA WEIHUA8Q8-

PSO算法使用简介 1PSO工具箱简介 PSOt为PSO的工具箱,该工具箱将PSO算法的核心部分封装起来,提供给用户的为算法的可调参数,用户只需要定义好自己需要优化的函数(计算最小值或者最大值),并设置好函数自变量的取值范围、每步迭代允许的最大变化量(称为最大速度,Max_V)等,即可自行优化。 与遗传算法相比,PSO仅需要调整少数几个参数即可实现函数的优化。该算法对待优化函数没有任何特别的要求(如可微分、时间连续等),因而其通用性极强,对多变量、高度非线性、不连续及不可微的情况更加具有其优势。 该工具箱的使用主要分为几个步骤: 1)在Matlab中设置工具箱的路径; 2)定义待优化函数; 3)调用PSO算法的核心函数:pso_Trelea_vectorized()。 其中第三步最关键,需要根据自己的需要设置好参数,可使算法极快收敛。 下面对各个步骤一一介绍。

2设置工具箱的路径 2.1 在Matlab的命令窗口点击“File——>Set Path….”,如下图: 2.2 在弹出的对话框中点击“Add Folder”,然后浏览找到工具箱放置的位 置,如下图

2.3 若想用到该工具箱所带的测试函数,还需要用如上同样的方法,设置路径 指向工具箱下的“testfunctions”文件夹; 2.4 若想用于训练神经网络的训练,设置路径指向工具箱下的 “testfunctions”文件夹“nnet” 3定义待优化函数(参见文件 用户根据自己的需要,定义需要优化的函数。举个例子,若想计算如下二元函数的最小值 z=*(x-3)^2+*(y-5)^ 其中自变量x、y的范围均为[-50, 50]。 可按下面的方法定义该待优化函数: %%----------------------------------------------------------------%% function z=test_func(in) nn=size(in); x=in(:,1); y=in(:,2); nx=nn(1); for i=1:nx temp = *(x(i)-3)^2+*(y(i)-5)^; z(i,:) = temp; end %%----------------------------------------------------------------%% 需要特别指出的是:PSO算法的核心函数pso_Trelea_vectorized()自动初始化一组 随机变量,因而待优化函数test_func(in)中的输入in是一个矩阵,由一组x和y的值组成,对应的,函数的输出z为一个向量 4定义待优化函数(参见文件 当定义好待优化函数后,设置相应的参数,然后就可以调用PSO进行优化了,对上面优化问题,按下面的方式进行调用: %%----------------------------------------------------------------%% clear clc

相关文档
最新文档