huayu601_Henry-MTK开发心得(完整版)
2018年app开发的心得体会-word范文 (13页)
android:id="@+id/layout"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
9、浏览模拟 SD 卡中的内容
调试程序,在 DDMS 中选择 "File Explorer" ,在其中的 sdcard 目录下就是模拟 SD 卡中的内容
10、查看日志 LogCat
Window -> Show View -> Other -> Android -> LogCat
11、在模拟器中安装/卸载 apk
5、AndroidManifest.xml - Android 程序的清单文件,相当于配置文件,配置应用程序名称、图标、Act(来自: : app开发的心得体会 )ivity、Service、Receiver等
三、Hello World 程序
1、res/layout/main.xml 代码
<?xml version="1.0" encoding="utf-8"?>
android:layout_height="wrap_content" android:text="FrameLayout"></TextView>
介绍
在 Android 中各种布局的应用,以及菜单效果的实现
MTK芯片总结 (2)word资料22页
MTK故障终结目前联发科技已开发出MT6205、MT6217、MT6218、MT6219、MT6226、MT6227、MT6228等系列平台其中 MT6205、MT6217、MT6218、MT6219、MT6226、MT6227、MT6228均为基带芯片,所有芯片均采用ARM7的核。
MT6305、MT6305B为电源管理芯片。
MT6129为RF芯片RF3146(7×7mm)、RF3146D(双频)、RF3166(6×6mm)为RFMD的PA。
MT6205为最早的方案,只有GSM的基本功能,不支持GPRS、WAP、MP3等功能。
(2019年MP)MT6218为在MT6205基础上增加GPRS、WAP、MP3功能。
MT6217为MT6218的cost down方案,与MT6128 PIN TO PIN,只是软件不同而已,另外MT6217支持16bit数据。
(2019年MP)MT6219为MT6218上增加内置AIT的1.3M camera处理IC,增加MP4功能。
8bit数据。
(2019年MP)MT6226为MT6219 cost 升级产品,内置0.3M 摄相处理IC,支持GPRS、WAP、MP3、MP4等,内部配置比MT6219优化及改善,比如配蓝牙是可用很便宜的芯片CSR的BC03模块USD3即可支持数据传输(如听立体声MP3等)功能。
MT6226M为MT6226高配置设计,内置的是1.3M摄像处理IC。
(2019年MP)MT6227与MT6226功能基本一样,PIN TO PIN,只是内置的是2.0M 摄像处理IC。
(2019年MP)MT6228比MT6227增加TV OUT功能,内置3.0M 摄像处理IC,支持支持GPRS、WAP、MP3、MP4。
(2019年MP)从MT6226后软件均可支持网络摄像头功能,也就是说你的机子可以用于QQ视频。
MTK芯片工作简解现在最长见的MTK手机芯片组合多是MT6128BT CPU(MT6219CPU)、MT6035电源IC和MT6129射频IC组合,以下是对MT芯片的简单讲解。
mtk入门相关知识总结
功能 :全新开始构建整个工程的 ARM 版,包括图片、声音、字符串等资源都要重做。在构建工程过
程中,清除所有的目标文件,库文件,日志文件等。
New 指令还会自动创建必要的目录、移除临时文件和
中间脚本、更新日志文件。
过程简要说明 :
new->cleanall->sysgen->ckscatter->mmi_feature_check->asngen->codegen->asnregen->operator_check_lit->$(B
Resgen:生成 MMI 资源。它依赖的指令有: code_generБайду номын сангаасte,cleancodegen,asngen,codegen,asnregen,cleanbin,mcddll_update,done。
Cmmgen :生成 CMM 文件。 Sysgen:生成内存映射文件,并放在 CUSTOMER 文件夹里面。
文件和在模拟器上使用的 mmiresource.dll 资源文件。
1.3. 编译命令
命令
说明
Clean New Update Remake
清除所有的目标文件、库文件和日志文件
清除并重新编译所有的文件;主要完成工作
:
gsm2.mak cleanall cmmgen mmi_feature_check asngen codegen asnregen operator_check_lite update 重新编译资源文件 ,生成相应的目标文件;主要完成的工作:
= clean or c (clean)
= cci or clean_codegen (clean codegen intermedia files)
MTK编程起步开发常用知识
MTK编程起步——开发常用知识2010-12-03 10:53:02| 分类:MTK工作总结| 标签:|字号大中小订阅加载过的字符串生成文件:string_resource_usage.txt加载过的图片生成文件:image_resource_usage.txtSMS编辑界面,中间按键的显示:mmi_sms_entry_editor{#ifdef __MMI_WGUI_CSK_ENABLE__EnableCenterSoftkey(0, IMG_GLOBAL_SEND_MSG_CSK);mmi_imc_disable_csk();#endif}EnableCenterSoftkey(0, 0);去掉其使用。
设置默认时间:custom_hw_default.c :DEFAULT_HARDWARE_YEAR、DEFAULT_HARDWARE_MON、DEFAULT_HARDWARE_DAYRestore.c 恢复出厂时间:RstResetDateTime()上下左右快捷键设置:Resource_shortcuts.c:数组:gShctCandList 可选的快捷方式入口gShctDefaultList 默认有的入口gShctDefaultDediList[4] 上下左右四个键的入口camera、video 的一些默认值设置:MMI_features_camera.h、MMI_features_video.h(plutommi\customer\custresource\pluto_mmi)UI_device_heightUI_device_widthMMI_button_bar_height修改默认输入法:Common_mmi_cache_config.c:NVRAM_SETTING_PREFER_INPUT_METHODRESTORE_PREFER_INPUT_METHODmodis上看需修改版本号:NVRAM_EF_CACHE_SHORT_LID_VERNO(custom_nvram_editor_data_item.h)电话本的存储设置:mmi_phb_entry_quick_search_list(){guiBuffer = GetCurrGuiBuffer(SCR_ID_PHB_QUICK_SEARCH_LIST);/*NEOTEL:caiqin 20100818 add for phb display begin*/#if !defined(__NEOTEL_N73_SETTING__)entryCount = mmi_phb_num_of_phb_contact_in_storage(g_phb_cntx.prefer_storage);#elseentryCount = mmi_phb_num_of_phb_contact_in_storage(MMI_STORAGE_BOTH);#endifSetLeftSoftkeyFunction(MTPNP_PFAL_PHB_entry_list_choose_number_dial, KEY_EVENT_UP);//左按键进入拨打的界面。
MTK-调试TRACE小结
MTK的模拟器调试说没技巧也是对的,说有技巧也不错.因为模拟器的技术与其说是MTK经验,不如说是VC经验.
由于模拟器能在没有样机的情况做大量的UI方面的开发,同时模拟器具有快捷,所见即所改等优点,因此,受到很多开发老手的青睐.熟练掌握模拟器使用技巧,对于提高工作效率,节省资源具有很积极的意义.
7.Alt+8打开汇编指令窗口,这个窗口用处不是很大,学习汇编的话,还是有用处的.一般情况下,如果第三方的库文件出了问题,也就只能使用这个窗口调试了.普通情况下,如果错误定位在C标准库文件的汇编代码上,只有一种可能,就是你的调用出错了.
调试占了研发的很大一部分时间,调试的基本技术就这样,一般情况下是综合运用,灵活掌握,以期快速解决问题,稳定代码.剩下Байду номын сангаас是经验积累的问题了.
a.如何使用断点快速定位到问题点呢?如果我们发现,拨号窗口显示出了问题,但我们对代码不熟,不知道拨号窗口的代码在哪个文件,哪一行,我们就可以在EntryNewScreen函数上打断点,当进入拨号时他就会停下来,这时我们能过堆栈窗口信息就可以很轻松的找到这个窗口的实现函数。详细研究代码,就可以找到解决方法.
MTK调试入门之一
曾有朋友让我写一些调试技巧方面的文章.调试对于软件是十分重要的,但却不是一篇二篇文章能讲清楚的.有很多调试技巧都是零零碎碎的东西,用的时候能很容易使用,但要写出来时,却还是比较麻烦的.
MTK的调试一般来说可以分为仿真调试与手机调试.这两种调试对于研发新功能,修改BUG,研究算法都是十分重要的.当然,这两种调试也有差异,有时会出现在模拟器运行正常,在手机却运行失败,或者相反,这就突出了软件模拟环境与硬件手机环境的差别.原因可能是各种各样的,比如可能是有些硬件软件没有办法模拟,有些新功能对硬件依赖强,不能模拟,新软件的有些函数只能在手机上运行,没有写相应的模拟器代码.等等原因都会导致两者差异.这里不一一赘述,大家知道模拟器和手机有差异就行了.
MTK平台开发总结(全)
MTK平台开发总结(全)声明:前阶段进行了近两个月的MTK平台上层开发,由于缺乏技术支持,对于整个平台的认识都是通过简略的文档和浅薄的经验摸索出来的。
其间整理了一些文档。
由于联发科提供的PDF全部是英文,有些名词难以翻译准确,只能凭单方理解和嵌入式开发的词汇习惯进行意译,还请谅解。
系列文章均出自原创,肤浅可笑之处,望海涵。
(一)窗体的重画通过观察可以发现,每个窗体模板都调用这样一个函数:dm_redraw_category_scree n()。
这个函数便是显示窗体的函数。
它内部的实现是这样的:获得该窗体所包含的组件及它们的属性,再根据组件的类型和属性,调用不同的接口,逐一绘制各组件。
详细流程如下图所示:由上面的流程可见,无论是窗体所包含的组件,还是组件的属性,都是根据模板ID获取的。
那么现在摆在面前的有两个问题:一、模板ID是如何传递到这个函数中的;二、模板ID和窗体组件、组件的属性,是如何关联到一起的。
我们逐一解决这两个问题。
一、模板ID是如何传递到这个函数中的模板ID,是Sho wCateg ory..Screen()过程中,所显示的界面的编号,千万不要与EntryNe wScree n(scrID,…) 函数中传入的窗口ID相混淆。
它们以―MMI_‖为前缀,被定义在枚举型结构MMI_CATEGORY_ID_L IST中,又通过结构体d m_data_struct和它的全局结构体变量g_dm_data,在应用程序中被广泛使用。
先看看结构体dm_data_struct的定义:typedef struct{S32 s32ScrId;S32 s32Cat Id;S32 s32fl ags;}其中,s32ScrId是当前窗口ID,也就是我们使用EntryNe wScree n()时传入的那个参数;而s32Cat Id才是模板ID;最后的flag,是模板需要显示软键盘、清屏等动作时,所置的标志变量,它在上面提到的那个dm_redraw_category_scree n()函数中被判断。
MTK开发中一些经验总结
MTK开发中一些经验总结1. 在确定你的MTK工程完整而且在模拟器和真机上能正常运行之前,不要开始工作。
2. MTK开发 C是唯一选择,不要试图用把C++工程移植到MTK平台 (c++是没有问题的,venus ui就是用c++写的,基于venus ui的wedgit也用c++)。
3. ADS C/C++ COMPILER不同的编译选项可能导致代码的性能差异很大。
ADS使用ARMV4指令集,而真机是Thumb指令集。
4. MMI/GUI的工作尽量用MODIS模拟器。
真机编译很慢,可用分布式编译加速。
5. Image$$ZI$$Limit 错误原因有2种:使用了malloc,free, printf, assert,fopen之类的函数; 定义了过大的静态数组。
6. 适配WIN32和ARMC平台。
文件读写和内存操作函数需要替换成MTK支持的函数。
7. MTK真机内存有限(MED堆内存<800k),ROM SIZE极其宝贵,尽量优化代码结构,减少内存占用。
8. MTK支持多线程,不过是用TASK替换Thread.9. 真机有watchdog, 函数内LOOP太久会导致阻塞并重启,可以加kal_sleep_task, 给系统一点空闲。
10. 真机重启常见的错误LOG有2种: assert failed: 会显示出错的文件及代码行。
data abort: 一般是数组越界。
11. 重启错误可通过恢复函数栈来大致定位出错函数段。
可在Cacher.exe里Advance>Exception handling查看stack dump ,对应查找\build目录下的.sym文件。
12. 做好代码的内存泄漏检测。
13. 不要频繁的分配小块内存,这样会导致内存碎片。
kal_sleep()为MTK睡眠函数,使用请注意以下问题:在MMI_TASK中请不要随便使用这个函数,在MMI_TASK中用这个函数会导致MMI_TASK睡眠,会影响其他消息的处理如果非必要请尽量不要使用,寻找其他解决方案。
MTK我的维修经验总结对你绝对有用
安卓开发心得实例(精选3篇)
安卓开发心得实例(精选3篇)安卓开发心得实例篇1时间飞快,转眼毕设实训已经结束,我们也完成了所选的项目任务。
从实训开始到现在,经历了三个多月的时间,在这段时间里,我们着手安卓应用程序开发,刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的AndroidSDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想。
我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。
1通过半个月的android实习,基本掌握了Android应用程序开发的一般流程。
对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。
学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。
例如:要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。
对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。
对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。
4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有conte_t,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。
android开发心得体会
android开发心得体会篇一:Android学习心得Android学习心得这学期,我们新开了一门课程——android的研发。
在老师们的介绍下,我们了解android的开发环境以及控件的功能。
刚开始接触Android觉得既陌生又亲切,陌生在于没有学过具体的开发软件,亲切在于它在界面开发上和web也可以形成了相通的架构,更加方便。
一、Android简介Android一词的本义指“机器人“,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。
Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。
Android 早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。
底层Linux 内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。
现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。
采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。
二、Androi前景市场上:现在2.2技术应该已经成型了,但是目前产品是2.2的貌似不是很多,在嵌入式的角度来说,前景应该不错,手机领域就不用说了,汽车导航,电子消耗品,它的界面我认为远比塞班要好,而且,开放软件是个趋势,这样,系统的市场占有率才能高,支持的软件多,自然生命周期,效益比率都高。
MTK编程小结
MTK编程小结:域名解析域名解析对于网络编程而言,硬编码IP到客户端,定是下下策,为此,我们需要域名解析功能。
MTK对此有类似的解决之道,即soc_gethostbyname,下面将它的用法简单叙述如下soc_gethostbyname( kal_bool is_blocking,//是否为阻塞式调用,手机平台一般不会支持阻塞式调用的???? module_type mod_id,??//调用该函数的模块id,也即将来接收消息的模块???? kal_int32 request_id,//用于区分是那个请求之用,我们自定义的id值,标示不同的应用???? const kal_char *domain_name,//域名???? kal_uint8 *addr,//ipv4的ip地址,将来也许会有ipv6的???? kal_uint8 *addr_len,//数据长度???? kal_uint8 access_id,//这个访问控制id,我没有使用给它赋值为0好了???? kal_uint32 nwk_account_id //手机gprs帐户id,做过手机的人自然会明白???? )//补充,调用这个函数不需要建立socket,而且是我们建立tcp/ip连接之前,必须完成一个必备步骤实例代码如下:typedef void (* mf_funcOnGetHostByName)(mf_u32 hAddr,mf_u32 nAddr);static mf_funcOnGetHostByName mf_dnsFunc = NULL;#define MF_DNS_APPID 1static void MF_dns_event(void * inMsg){app_soc_get_host_by_name_ind_struct *dns_ind;if( inMsg ){??dns_ind = (app_soc_get_host_by_name_ind_struct*) inMsg;??if (dns_ind->result == KAL_TRUE)??{?? mf_u32 ipAddr = 0;?? switch (dns_ind->request_id)?? {????case MF_DNS_APPID:???? ClearProtocolEventHandler(MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND);???? kal_prompt_trace(MOD_ENG,"MF_getHostByName??ip: %d, %d, %d, %d", dns_ind->addr[0], dns_ind->addr[1], dns_ind->addr[2], dns_ind->addr[3]);???? MF_memcpy(&ipAddr, dns_ind->addr,dns_ind->addr_len);???? if( mf_dnsFunc )??????mf_dnsFunc(MF_ntohl((mf_u32)ipAddr),ipAddr);???? mf_dnsFunc = NULL;???? break;?? }else if( mf_dnsFunc ){??mf_dnsFunc(0,0);}}mf_bool MF_getHostByName(mf_s8 * server_domain,mf_u32 * hAddr,mf_u32 * nAddr, mf_funcOnGetHostByName func){kal_int8 ret = MF_FALSE;static kal_uint8 addr_len=0;kal_uint32 nwk_account_id = mf_skt_account;static kal_int16 sDNSHandle = MF_DNS_APPID;static kal_uint32 ipAddr;mf_dnsFunc = func;ret = soc_gethostbyname(KAL_FALSE,??????????????????MOD_MMI,????????????????????(kal_int32)sDNSHandle,????????????????????(const kal_char *)server_domain, ????????????????????(kal_uint8*)&ipAddr,????????????????????(kal_uint8*)&addr_len,????????????????????(kal_uint8)0,????????????????????nwk_account_id);????if (ret == SOC_SUCCESS){??kal_uint8 *ptr;??ptr = (kal_uint8*)&ipAddr;??kal_prompt_trace(MOD_ENG,"MF_getHostByName??ip: %d, %d, %d, %d", ptr[0], ptr[1], ptr[2], ptr[3]);??if(hAddr)?? *hAddr = MF_ntohl((mf_u32)ipAddr);??if(nAddr)?? *nAddr = (mf_u32)ipAddr;??return MF_TRUE;????}else if(ret == SOC_WOULDBLOCK){??SetProtocolEventHandler(MF_dns_event, MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND);kal_prompt_trace(MOD_ENG," MF_getHostByName , ret %d", ret);return ret;}。
安卓开发实训心得(4篇)
最新安卓实训心得体会安卓开发实训心得(4篇)安卓实训心得体会安卓开发实训心得篇一1、掌握 android 系统开发的一些常用知识2、拥有独立解决开发中遇到问题的才能3、熟悉 android 软件开发流程并至少做一个 android 软件工程。
理解现阶段互联网开展主流,理解挪动互联网,认识挪动互联网的开展与展望,认识android,理解基于android 的应用软件开发方法及其商业流程。
把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际稳固所学的知识,进步对实际生活的认识,积累经历。
使学生在此期间可以初次体会到实际消费中的种种技能与经历,完成一项工程锻炼独立考虑及团队合作才能。
使学生们进一步加深对所学知识的理解,理论联络实际,稳固所学有关计算机根底理论知识和根本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会消费中应用的感性认识,深化理解计算机在各个领域中的应用状况。
消费实习是学校教学的重要补充局部,是区别于普通学校教育的一个显著特征,是教育教学体系中的一个不可缺少的重要组成局部和不可替代的重要环节。
它是与今后的职业生活最直接联络的,学生在消费实习过程中将完成学习到就业的过渡,因此消费实习是培养技能型人才,实现培养目的的主要途径。
它不仅是校内教学的延续,而且是校内教学的总结。
消费实习一方面稳固了书本上学到的理论知识,另一方面,可获得在书本上不易理解和不易学到的消费现场的实际知识,使我们在实践中得到提高实训环节对于进步学生的综合才能和全面素质具重要意义要求:1、确定开发的程序,搜集和调查有关技术资料。
2、按软件工程步骤进展程序设计。
3、对完成的程序进展测试和完善。
4、完成课程设计报告。
二.实习内容:本次实习主要分为 2 个局部,前半局部是学习 java 的相关根底知识,后半局部是学习 android 开发根底及制作小组 android 工程 app。
由于实习的最终目的是做出一个 app,所以开场我们学习了制作app 要用到的 java。
安卓开发工作心得体会
安卓开发工作心得体会安卓心得体会【篇1:android学习心得】android学习心得这学期,我们新开了一门课程——android的研发。
在老师们的介绍下,我们了解android的开发环境以及控件的功能。
刚开始接触android觉得既陌生又亲切,陌生在于没有学过具体的开发软件,亲切在于它在界面开发上和web也可以形成了相通的架构,更加方便。
一、android简介android一词的本义指“机器人“,同时也是google于2021年11月5日宣布的基于linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
目前,最新版本为android2.4gingerbread和android3.0honeycomb。
android是基于linux开放性内核的操作系统,是google公司在2021年11月5日公布的手机操作系统。
android早期由原名为android的公司开发,谷歌在2021年收购android.inc后,继续对android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。
底层linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以java编写。
2021年初数据显示,仅正式上市两年的操作系统android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。
现在,android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能mp4方面也有较大发展。
采用android系统主要厂商包括台湾的htc,(2..android应用程序组成3.api参考文档的使用包(package)的索引●interfaces●claes●enums●exceptions类(cla)的索引●扩展和实现内容●按包名的继承关系(可用于反找包)●overview(概览)●xmlattributes(xml的属性)●constants(常量)●constructors(构造函数)●methods(方法)通过将近快一学期的学习,在这次android这门课程的学习过程中,我了解到:(一)android基础知识:1.、环境的配置:(1)配置java程序开发环境;(2)安装并汉化eclipse(jdk);(3)androidsdk的安装;(4)adt的安装及配置;(5)android模拟器的配置。
MTK 学习报告
MTK无线电平台学习报告1,MTK平台默认是基于多语种的,所以基本上与文本相关的都是使用unicode编码,如L”Hello World”方式强制将字符串转换为unicode编码。
2,MTK无线电平台的屏幕类似与windows等系统中的窗口概念,但是MTK下的屏幕是独占式的,即任何时候只能有一个屏幕。
3,程序规范:规范化就是要我们将我们的程序独立出来。
独立分为两大步:代码独立与数据独立:3.1,代码独立:就是将程序代码放到单独的文件中。
3.1.1 目录结构:一般新加的MMI程序都放到plutommi\MMI下面Plutommi\MMI\MyApp 程序总目录Plutommi\MMI\MyApp\MyAppInc 头文件目录Plutommi\MMI\MyApp\MyAppSrc 源文件目录因使用ARM编译器,需手动加入新文件到数据表文件中,需修改make\plutommi\下的三个文件:1)Plutommi.lis:此文件用来指明MMI所要编译的所有源文件,在文件中添加如下一行:Plutommi\MMI\MyApp\MyAppSrc\MyAppSrc.c2)Plutommi.inc 此文件用来指明MMI所有头文件所在目录:Plutommi\MMI\MyApp\MyAppInc3)Plutommi.pth此文件用来指明MMI所有源文件所在目录。
Plutommi\MMI\MyApp\MyAppSrc另外在plutommi\mmi\MyApp\MyAppInc\下创建程序头文件:MyAppProt.h //存放函数声明,只被本程序的源文件加载MyAppDefs.h //用来定义本程序的资源IDMyAppTypes.h //存放本程序所需的类型,结构,常量定义MyAppGprot.h //存放函数声明,但被用于对外接口3.1.2 代码控制为了精简最终生成的烧录程序,一般都给每个小程序加上自己的编译开关,并将自己程序所有代码都包含进编译开关。
MTK学习笔记总结
可以通过 tools\chk_env 查看是否搭建成功。
make custom=** make custom=** make custom=** make custom=**
gprs new gprs remake %1 gprs update %1 gprs new_modis
全部重新编译 编译修改部分 更新资源 new 后生成 modis 工程
MSYS
1.0.10
MSYS 工具是 Minimal GNU(POSIX)system on Windows 的简称,是一个小型的 GNU 环境,包括基本的 bash,make 工具等等,是 Windows 下最优秀的 GNU 环境。
7zip
3.13 7zip 压缩工具(7za.exe),在编译过程中,程序会调用它解压缩图片资源。
// 正常模式开机
mmi_bootup_entry_animation()
// 开机动画
mmi_pwron_entry_animation_screen()
// 开机动画界面
gui_start_timer(force_stop_time, mmi_pwron_force_terminate_display) // 设置强制关闭动画计
口中就可以了解到是否打了 SP6 补丁了。
Source Insight
因为 MTK 源文件代码量相当的惊人,用其他的编译器来查看代码修改代码会相当 3.5
的不方便,这里强烈推荐该软件,必定会让你的开发事半功倍。
Xoreax IncrediBuild
3.30b
可以在 CMD 和 VC6 下面让读者搭建自己的分布式编译系统,让编译变的更快捷, 必须再 Microsoft Visual C++安装后再安装。
MTK开发心得(完整版)
E:
cd E:\MTK_P1300\P1300_V1.7_Release\
make new 注 3:第一次 make 的时候要用“make new”,make new 的时间比较长(慢的机器搞 不好要 2 小时以上),编译过程中间会出现一些文件找不到的信息,只要编译过程没意 外终止,那些信息可以忽略。编译日志文件位置: build\NEOTEL25_06B\log\,要查看编
如果编译过程中发现怪异的问题,如: incomingstringiddef.h(120) : error C2059: syntax error : 'constant' 或者 error C2065: 'STR_CM_REDIAL' : undeclared identifier 之类 这个时侯你可能需要看一下你 VC 相关路径的设置顺序,如下图:
译 过 程 有 啥 问 题 就 看 这 个 目 录 下 的 文 件 了 ; 生 成 的 bin 文 件 位 置 :
build\NEOTEL25_06B\*.bin,下载烧录就是烧 bin 文件。
这里顺带介绍下 build 的命令格式:
make new
清除后重新编译整个项目
make resgen
重新生成资源
模拟器能模拟真机的大部分行为,这样能给调试带来很大便利,不需要每次改动都 要烧录。
模拟器要从源码编译,解压压缩包“huayu201_P1300_V1.7_Release.rar”里面的文 件 “ HUAYU_P1300_V1.7_Release.rar ” 到 目 录 “ E:\MTK_P1300 ”, 此 时 会 出 现 目 录 “E:\MTK_P1300\P1300_V1.7_Release”,这就是 P1300 的代码目录树了;接着打上最新 的 补 丁 , 解 压 压 缩 包 “ huayu203_P1300_V1.7_Release_patch.rar ” 里 面 的 压 缩 文 件 “HUAYU_P1300_V1.7_Release_patch.rar”到目录 “E:\MTK_P1300\P1300_V1.7_Release”,解压时选择全覆盖以替换被修改过的文件,打 补丁之前对目录树里面的文件进行修改过的,需要手动再加上去。
嵌入式开发学习心得感想(通用5篇)
嵌入式开发学习心得感想(通用5篇)嵌入式开发学习心得感想篇1学习嵌入式,该学习什么基本的知识呢?首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。
很多人会问,C 语言要学到怎么样,我觉得这没有标准的答案。
我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。
其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。
应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。
还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。
还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。
最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。
Android开发心得
本应用程序所支持的最低SDK版本代号。
注:除了Activity外,通常还会根据需要从ContentProvider、IntentReceiver、Service这3个类派生,这4个Android类可以称作Android的4大嫡系组件,开发Android应用可单独或组合使用这几个类,它们的主管用途分别如下:
3、安装Android开发插件ADT(Android Development Tools plugin)。运行Eclipse,第一次运行的时候会要求指定一个工作目录,出于数据安全考虑,通常建议重新指定一个目录而不是用缺省的。运行Eclipse后,点选如下图所示高亮部分菜单安装插件:
如下图所示在“Work with:”后面的编辑框输入下载ADT的URL地址:“/android/eclipse/site.xml”然后点选“Add按钮”,给这个站点取个名字完成新下载站点的添加。如下图所示,这个站点有两个插件可以下载安装,都选上吧,一路下一步,同意相关协议,完成ADT插件的安装。
1、新建一个Project
上一章我们已经了解到如何从已有代码创建一个项目,这里我们要从无到有,创建一个新的Project。如下图,新建一个Android Project,项目的属性基本上都要我们自行设定(注意看,从头创建新Project是点选“Create new project in workspace”,缺省是这个):
选定ApiDemos路径后,项目其他相关信息自动被填充好,点“Finish”。
2、创建AVD
AVD是Android Virtual Device的缩写,实际上就是仿真器,如下图点选AVD工具条按钮:
如下图,指定新的AVD Name, Target和Skin,之后点选“Create AVD”
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、开发环境设立以下表述中提到的相关压缩包或安装文件到华禹ftp服务器下载,部分文件要到群共享里面下,那里是最新的。
华禹ftp服务器:IP:220.113.15.15,帐号为,密码为study-bbs0304P1300的QQ群号:15762255P1300_Build_Guide.rar-------------------------来自ftp服务器,“华禹\MTK相关部分”目录下手机开发板C语言开发视频.rar--------------来自ftp服务器,“华禹\MTK相关部分”目录下huayu109_ads1.2.rar------------来自ftp服务器,“华禹\旋风001手机模块\1.工具类”目录下huayu102_ADS12_Patch_Windows.rar-----------------------------------------------------------同上huayu106_perlzip.rar---------------------------------------------------------------------------------同上huayu108_Source Insight3.5.rar--------------------------------------------------------------------同上huayu101_p1300软件使用工具及开发指南.rar------------------------------------------------同上huayu201_P1300_V1.7_Release.rar------------------------------------------------文件来自群共享huayu203_P1300_V1.7_Release_patch.rar----------------------------------------文件来自群共享FlashTool_v3.0844.00.rar------------------------------------------------------------文件来自群共享huayu501_MTK界面开发说明.rar-------------------------------------------------文件来自群共享1、开发主机要求及所需工具:操作系统:Windows 2000, WinXP. 推荐Windows 2000 with SP2 or later.编译器:ADS (Arm Developer Suite) v1.2 [Build 842]Perl解析:ActivePerl, 推荐使用ActivePerl 5.6.1版本仿真工具:MTK PC Simulator跟踪工具:Catcher_L1 v3.10.01,从串口输出调试信息,只做普通UI应用的话,大致不会用到,用PC仿真工具就好了烧录工具:FlashTool_UI v3.1.05 或FlashTool_v3.0844.00其他:PL2303_Driver_XP2K v204102,这是下载线用到的USB串口驱动,以前机器上装过PL2303驱动的,建议改用这个,否则可能会有蓝屏的问题。
2、开发环境建立过程:新建一个目录,英文的好了,否则有些工具不认识中文路径,这里以E:\MTK_P1300为例说明,下面我用文字和图片简单说明下安装过程,更详细的安装过程可以看压缩文件“手机开发板C语言开发视频.rar”中的Flash文件“P1300_Build_Env.swf”。
1)安装ADS1.2解压文件huayu109_ads1.2.rar到某个目录,比如说解压到“E:\MTK_P1300”,解压完后运行“E:\MTK_P1300\ADS1.2\Setup.exe”,一路按下一步,最后安装License时选定文件“E:\MTK_P1300\ADS1.2\CRACK\ license.dat”,然后接着一路下一步直到安装完。
安装完后删掉目录“E:\MTK_P1300\ADS1.2\”,节省磁盘空间。
2)安装ADS补丁运行huayu102_ADS12_Patch_Windows.rar压缩文件中的ADS_Patch_Window.exe,这是个自解压的压缩文件,选Unzip解压到上一步ADS的安装目录(缺省是C:\Program Files\ARM\ADSv1_2),解压过程中如果问到是否覆盖,全部选覆盖好了。
3)安装脚本解释器Perl直接运行压缩包huayu106_perlzip.rar里面扩展名为msi的安装文件,缺省安装就好,一路Next,呵呵。
上述几步完成后,编译环境基本建立,此时可以开一个dos窗(开始菜单->运行->输入cmd->确定)看一下,安装正常应该能顺利执行以下命令,如下图:注意看版本号,应该是ADS1.2 [Build 842],不是的话可能没打补丁,或补丁打的位置不对,请看第2步ADS补丁部分的说明并重新打一次,直到版本号对为止,哈哈。
这是perl解释器的运行画面。
注1:上述安装过程会自动创建编译环境所需的环境变量,如果发现编译不正常了,可能是安装了其他编译工具导致冲突,这时建议查看下系统环境变量,把Perl和ADS的安装目录调到最前面,同时从path中去掉可能会产生冲突的编译工具链的路径(例如winavr),如下图所示(我是安装到D盘滴,缺省是C盘,不过我C盘几乎被我塞满了):如果嫌改path麻烦(因为要用到其他编译工具链的时候还得改回去),还有一种办法,就是改make.bat批处理,具体见注4中相关说明。
注2:如果安装ADS时,改变了默认安装路径,需要修改源码中的设置,源码目录树解压过程见模拟器编译环节相关介绍。
make\Option.mak----------------------------------ifeq ($(strip $(COMPILER)),ADS)DIR_ARM = c:\progra~1\arm\adsv1_2 # 修改这里DIR_ARM := $(strip $(DIR_ARM))DIR_TOOL = $(DIR_ARM)\binDIR_ARMLIB = $(DIR_ARM)\libDIR_ARMINC = $(DIR_ARM)\includeendif------------------------------------------------比如改装到D盘了,这里把红色部分“c”改成“d”就好了4)代码编辑环境运行压缩文件huayu108_Source Insight3.5.rar中的安装文件安装即可。
至于编辑器,这个看个人喜好了,不过Source Inside看代码蛮方便的。
5)PC机模拟器模拟器MTK PC Simulator是用来在PC上仿真调试用的,要安装VC6 SP6(同时要安装Uuicode 静态和动态库,没有装Unicode库的可以用“huayu103_MTK模拟器DLL 补丁.zip”中的库,拷到系统目录“%windir%\system32”下即可)。
我机器上的VC是有装Unicode库的,没装过Unicode库的如果在模拟器编译或运行中出现问题,建议重装下VC6,安装时勾选Unicode库,并打上相关补丁到SP6。
模拟器能模拟真机的大部分行为,这样能给调试带来很大便利,不需要每次改动都要烧录。
模拟器要从源码编译,解压压缩包“huayu201_P1300_V1.7_Release.rar”里面的文件“HUAYU_P1300_V1.7_Release.rar”到目录“E:\MTK_P1300”,此时会出现目录“E:\MTK_P1300\P1300_V1.7_Release”,这就是P1300的代码目录树了;接着打上最新的补丁,解压压缩包“huayu203_P1300_V1.7_Release_patch.rar”里面的压缩文件“HUAYU_P1300_V1.7_Release_patch.rar”到目录“E:\MTK_P1300\P1300_V1.7_Release”,解压时选择全覆盖以替换被修改过的文件,打补丁之前对目录树里面的文件进行修改过的,需要手动再加上去。
编译PC仿真器之前需要先把刚才上面得到的目录树build一次,开一个dos窗,盘符和目录转到代码目录树对应的盘符和目录,例如:E:cd E:\MTK_P1300\P1300_V1.7_Release\make new注3:第一次make的时候要用“make new”,make new的时间比较长(慢的机器搞不好要2小时以上),编译过程中间会出现一些文件找不到的信息,只要编译过程没意外终止,那些信息可以忽略。
编译日志文件位置: build\NEOTEL25_06B\log\,要查看编译过程有啥问题就看这个目录下的文件了;生成的bin文件位置: build\NEOTEL25_06B\*.bin,下载烧录就是烧bin文件。
这里顺带介绍下build的命令格式:make new 清除后重新编译整个项目make resgen 重新生成资源make remake 重新编译链接项目make viewlog xxx 查看模块xxx的编译日志make 查看可以用make选项帮助信息注4:如果机器上装了其他gcc编译工具链(比如winavr之类)的话可能要手动改下Path,否则编译会出错,修改Path的方法见注1,也可以修改批处理文件“E:\MTK_P1300\P1300_V1.7_Release\make.bat”,在“perl make2.pl %*”之前加上下面两句:set PERL5LIB=D:\perl\libsetPATH=D:\perl\bin;d:\progra~1\arm\adsv1_2\bin;E:\MTK_P1300\P1300_V1.7_Release\tools; c:\windows\system32;c:\windows;c:\windows\system注意,上面的路径是我机器上的,不是缺省安装路径,要根据自己的实际安装路径做修改。
下面开始编译PC仿真器了,用VC6打开工程文件“E:\MTK_P1300\P1300_V1.7_Release\plutommi\mmi\ PC_Simulator.dsw”,然后开始编译,编译时间比较长,具体看机器配置了,这时又可以干点别的啥了,呵呵。
因为仿真器工程涉及文件较多,编译费时,建议编译过程中电脑上少开窗口,特别是网络类的,如QQ,有时会发现开QQ后,编译过程中VC会挂死,呵呵。