MTK-Android软件培训
MTK软件培训课程(三)MTK驱动架构分析精品PPT课件
GDI和pixtel_UI的关系
GDI的实现
使用GDI_HANDLE,gdi_handle来操作 GDI对象,GDI的对象可以是layer,gif, jpeg等。 GDI函数返回一个GDI_RESULT GDI函数使用互斥来保护,进入GDI函数 时调用GDI_ENTER_CRITICAL_SECTION()退 出函数时调用GDI_EXIT_CRITICAL_SECTION()
Media Task线程从med_create开始创建,其实 med_create函数只是将入口地址传递给库里的 函数,由里面的函数来创建线程。
Med_create中传入了以下的函数:
med_task_main,
/* 线程入口,消息泵 */
med_init,/*源自初始化 ,指定空间分配*/NULL,
设置当前活动模块,通过stack_set_active_module_id 分发消息,通过消息号,找到对应的消息处理函数,
使用med_main函数。程序里面有很大的一个消息索 引 释放返回消息数据内存区域,free_ilm
Media Task消息
从med_maincam_main相应的消息处 理函数,这时从MDI发过来的一个消息 才被识别,并进入相应的消息处理函数。 这时,我们回过头来再来看我们前面在 MDI章节所分析的Preview实现的例子, 会更清晰一些。 原来的例子:Preview实现
Media Task
Media Task模块分成4个部分:
Camera Audio Image Video
Media Task
Media Task模块有以下的作用:
Android应用开发与运营行业培训资料
实现Service与Activity之间的数据传递和通信。
BroadcastReceiver注册与使用
了解BroadcastReceiver的基本概念和使用方法,实现广播的发送和接收。
ContentProvider与数据存储
ContentProvider基本概念
内存优化策略及工具使用
合理使用内存
避免内存泄漏和过度使用内存,及时释放不再使用的资源 。
使用内存分析工具
利用Android Studio内置的内存分析工具,如Memory Profiler和LeakCanary,定位内存泄漏和优化内存使用。
优化图片和音视频资源
对图片和音视频资源进行压缩和优化,减少内存占用。
UI设计与布局
UI设计原则
学习Android UI设计的基本原 则和最佳实践。
布局管理器
了解不同的布局管理器,如 LinearLayout、 RelativeLayout、 ConstraintLayout等。
控件与组件
掌握常用的Android控件和组 件,如TextView、Button、 ImageView、ListView等。
流量优化策略及工具使用
01
02
03
压缩文件大小
对传输的文件进行压缩, 减少流量消耗。
使用缓存技术
对重复请求的数据进行缓 存,减少网络请求次数和 流量消耗。
优化数据传输方式
使用更高效的数据传输协 议和方式,如HTTP/2、 WebSocket等,降低流量 消耗。
调试技巧与常见问题排查
使用日志调试
通过打印日志信息,定位 问题原因和解决方案。
通知与闹钟服务实现
Android培训课件
手机软件开发培训第一品牌
手机软件开发培训第一品牌
手机软件开发培训第一品牌
本阶段是下载Android内核git源码树,从头编译 Android的SDK和镜像文件。理解Android系统的 内部机制和原理。
手机软件开发培训第一品牌
本阶段主要是为各种机型适配、熟悉apk内部结构, 熟悉Android签名机制和产品发布,学员作品可以 发布在Google Market上。
手机软件开发培训第一品牌
本阶段主要学习如何处理图形功能,比如如何划线, 使用2D进行图形绘制。在Surface上直接绘制图形。 如何绘制线段,矩形,圆,图片和动画功能。如何 制作图片渐变等功能。 本阶段还将学习到Anroid游戏编程和,Surface控 件编程,SurfaceView控件编程,Canvas控件编程。 设计在2D, 3D的游戏开发。游戏过程设计,游戏 物理引擎设计和各类游戏画面编程。
手机软件开发培训第一品牌
就业指导和职业规划 就业老师根据学员意向及学习情况,对学员进行职 业规划。
手机软件开发培训第一品牌
千锋3G培训既有Android SDK(基于Java语言)也有 Android NDK(基于C语言)培训,也已经成功的为 很多公司以及大学院校和科研部门做过Android的 企业培训,我们在培训过程中也注意到如果将 Linux培训跟Android培训结合到一起,对两个方 向的培训都无形中都是个促进作用。同时很多合作 公司在于我们的沟通中也表现了对精通Android各 方向开发的高素质人才的渴望,所以精通这些的人 才势必是企业竞相争抢的人才,基于此千锋顺应当 前潮流,国内第一家推出了“移动Android开发” 人才培训计划。
MTK培训资料
Man Machine InterfaceAgendaMTK Software ArchitectureMTK MMI ArchitectureExample to Write an Application Third Party SoftwareToolQ&AMTK Software ArchitectureMTK Software ArchitectureSoftware ArchitectureKAL and OSLDate TypeTask ManagementSoftware ArchitectureSoftware Architecture –abbreviationsRMI: Remote MMI, i.e., PC side, which uses AT commands to communicate with Protocol stack.L4: The adaptation layer between MMI/AT and protocol stack.L4A: Layer 4 Adaptation to translate primitives sent from upper layers to function calls.L4C: Layer 4 Controller, coordinates all L4 modules to serve upper layers.ATCI: AT Command Interpreter.UEM: User Equipments module used to abstract basic device drivers like keypad, LED, GPIO.PHB: Phone Book management.SMU: Security Management (SIM, STK).CSM: Call Service Management (bearer capability handling, CSD/FAX service, CC, SS).RAC: Registration Access Control (GSM/GPRS registration management,PLMN list/selection, RSSI report)SMSAL: SMS Application Layer (message storage, MO/MT messages, CB).TCM: Terminal Context Management (PDP context profiles, context activate/deactivate, relay of packet data), interface to PPP/TCPIP/SNDCP.ENG: Engineer Mode to log information.KAL (Kernel Abstraction Layer)Target Real TimeOperating System GSMHandset Software GSMHandset SoftwareKernel Abstraction Layer (KAL)Target Real Time Operating SystemXTest/DebugFacilitiesPortabilityCommon design philosophyTest/Debug facilitiesEasier code integrationKAL ServicesKALServicesTest / Logging / Simulation facilities Exception handling Resource / MemorymanagementTask management /communication /synchronizationTimer ControlTask-ATask-BReference:KAL_ProgrammingGuide_20041005.pdfSystemServiceUserManual_20050527.pdfOSLNucleus,or other RTOSKALOSLPC simulator –simulate the OSL services on Win32 to facilitate development and debugging MMI task on PC.N.B.to ensure all programs within MMI task can run correctly on PC, use of OSL APIs is MUST.Data TypesGeneral data types:Kal_non_specific_general_types.hKAL specific data types and functions’prototypes: Kal_release.hOSL specific data types used within MMI Tasks: PixtelDataTypes.hTask Management & Identificationmodule_type and task_indx_typeDefined in “Stack_config.h”Used to define index of all modules and all tasksmod_task_g[RPS_TOTAL_STACK_MODULES]Defined in “syscomp_config.c”Used to map MODULE-ID to TASK-IDsys_comp_config_tbl[RPS_TOTAL_STACK_TASKS + 1]Defined in “syscomp_config.c”Used to define information of all tasks, e.g., task’s name, task queue’s name, priority, size of external/internal queue, task creation function, whether to use internal ram.custom_comp_config_tbl[MAX_CUSTOM_TASKS]Used for customer defined modules or tasks.task_info_g[RPS_TOTAL_STACK_TASKS + 1]Global array containing component task information, which will be filled in while callingstack_init_comp_info().module_info_g[MAX_MULTIMOD_TASK_NUM]Global array containing component task information, which will be filled in while callingstack_init_module_info().Task RoutinesTask CommunicationApp_ltlcom.hData structure ofmassage used for inter-layer communicationApp_ltlcom.h Data structure of massage used for inter-layer communication Stack_ltlcom.hMacro and API used to send/free messagesStack_ltlcom.h Macro and API used to send/free messagesTo allocate memory from shared memory pool.Ctrl_buff_pool.hDefine size and number of control buffer (memory pool)To allocate memory from shared memory pool.Ctrl_buff_pool.h Define size and number of control buffer (memory pool)To initialize specificmodule’s parameter pointer and peer buffer pointer before use it. (module_ilm_g [module_id])To initialize specific module’s parameter pointer and peer buffer pointer before use it. (module_ilm_g [module_id])Send message to other taskSend message to other taskTo receive message from external queueTo receive message from external queue To receive message from internal queueTo receive message from internal queue QueueGprot.hUsage of OSL send/receive internal/ external msg.QueueGprot.h Usage of OSL send/receive internal/ external msg.MTK MMI ArchitectureMTK MMI ArchitectureMMI Task structureMMI and L4 Communication MMI Architecture¾FrameworkProvides OS abstractionEvent HandlersHistory ManagerNVRAM AccessFile System Management ¾UI, ResourceMMI DirectoriesTask structureTask struct(sys_comp_config_tbl ):typedef struct {kal_char *comp_name_ptr;kal_char *comp_qname_ptr;kal_uint32 comp_priority;//3-255kal_uint16 comp_stack_size;kal_uint8 comp_ext_qsize;kal_uint8 comp_int_qsize;kal_create_func_ptr comp_create_func;kal_bool comp_internal_ram_stack;} comptask_info_struct;KAL_FALSEmmi_create 100304096TASK_PRIORITY_MMI“MMI Q”"MMI"MMI TaskLayer 4 AdapterExample:MOD_MMI--->MOD_L4Cmmi_frm_sms_send_message( )PRT_MSG_ID_MMI_SMS_SEND_MSG_REQ---------------------------------L4a_callback.cl4a_recv_msg_ft[MSG_ID_MMI_MESSAGE_SUM]_call_MSG_ID_MMI_SMS_SEND_MSG_REQ_( )---------------------------------MOD_L4C--->MOD_SMSALl4c_sms_exe_post_msg_req( )MSG_ID_L4CSMSAL_SEND_REQMMI and L4 Communication(1/3)How To CommunicateSend/Receive messages thru the message Queue .#define OslMsgSendExtQueue msg_send_ext_queue #define OslReceiveMsgExtQ receive_msg_ext_q SetProtocolEventHandler(FuncCB, msg_id);Communication Datatypedef struct ilm_struct{oslModuleType oslSrcId; // Source module ID.oslModuleType oslDestId; // Destination module ID.oslMsgType oslSapId; // service access point.oslMsgType oslMsgId; // message name ID.oslParaType *oslDataPtr; //local parameter bufferoslPeerParaPtr *oslPeerBuffPtr; //peer buffer pointer } ilm_struct;MOD_MMI, MOD_L4C, MMI_L4C_SAP, MSG_ID_XXX, local_para_ptr, peer_buf_ptr, MMIL4CQueueHow to listen a message from MMI Queue: From task create and entry a message loop.OslReadCircularQ(&Message);OslReceiveMsgExtQ(mmi_qid, &mmi_message);How to write a message to MMI Circular Queue: When NVRAM receive other messages.OslWriteCircularQ(&ilm_ptr);How to receive a message from L4C: Register a response message callback.SetProtocolEventHandler(FuncCB, msg_id);How to send a message to L4C:Step1: Construct a local parameter buffer.Step2: Assign required values into local parameter buffer.Step3: Send out the message to the L4C module.OslMsgSendExtQueue(&Message);Message Info = Header info + Data info Local parameter Header info:#define LOCAL_PARA_HDR \kal_uint8ref_count; \kal_uint16msg_len;peer buffer parameter Header info :#define PEER_BUFF_HDR \kal_uint16pdu_len; \kal_uint8ref_count; \kal_uint8 pb_resvered; \kal_uint16free_header_space; \kal_uint16free_tail_space;Local parameter:Header info + Data info:Ex: typedef struct{LOCAL_PARA_HDRkal_uint8volume_type;kal_uint8volume_level;} mmi_eq_set_volume_req_struct;How To Create Local Parameter:Dynamic to allocate memory buffer:OslConstructDataPtr(sizeof(mmi_at_alarm_query_res_req_struct); When to Free Local Parameter:While L4 receive the information, after finishing to process themessage, L4 task will automatically free this buffer.OslFreeDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);Peer buffer parameter:Header info + Data infoEx: typedef struct{PEER_BUFF_HDRvoid *ptr;} mmi_example;How To Create Peer Buffer Parameter: Dynamic to allocate memory buffer:Ps: The MMI did not use this buffer to communicate with L4.construct_peer_buff(pdu_len, header_len, tail_len, direction); When will Free Peer Buffer:While receive the information, after finishing to process the message, L4 task will automatically free this buffer.free_peer_buff(peer_buff);Example –Set VolumeSet a volume request:void SetVolumeLevelReq(volume_type_enum volume_type,U8 volume_level){MYQUEUE Message;mmi_eq_set_volume_req_struct*setVolumeLevelReq;Message.oslMsgId= MSG_ID_MMI_EQ_SET_VOLUME_REQ;//Message ID, reference the l4a.h filesetVolumeLevelReq= OslConstructDataPtr(sizeof(mmi_eq_set_volume_req_struct));//Create local parameter buffersetVolumeLevelReq->volume_type = volume_type;setVolumeLevelReq->volume_level = volume_level;Message.oslDataPtr= (oslParaType*)setVolumeLevelReq; //Local parameter buffer Message.oslPeerBuffPtr= NULL; //Peer parameter bufferMessage.oslSrcId=MOD_MMI; //Send from Source moduleMessage.oslDestId=MOD_L4C; //Send to destination moduleOslMsgSendExtQueue(&Message); //Send to L4 task}MMI Architecture...HandlerFrameworkEvent HandlerFile System ManagementNVRAM AccessOSL WrapperHistory ManagerMMI QueueL4QueueLayer 4 / Network SimulatorUI LayerApplication...Call ManagerInstant MessageVideo CalendarFile ManagerCamera Alarm Function ListCategory ScreensTimer FuncRequest TimerRegister HandlerImageFont ThemeGraphics LibraryGDIInterface Operating System (Nucleus)R e s o u r c e T a b l eKeyPixtel InterfaceCore Functionality Provided by FrameworkOSL wrapper : make MMI code adaptive QueueTimerManagement of event handlerScreen management –History mechanismNVRAM accessFile system managementProvides OS abstractionProvides OS abstractionProvides wrappers to all operating system dependent calls to be made by the application.Queue¾QueueGprot.hTimer¾WrapperGprot.h¾MMIFrameworkComponents.pdfQueueExternal queue(Inter-task queue, mod to mod(In the diff task)) Reseive message:OslReceiveMsgExtQ(receive_msg_ext_q)Send message:OslMsgSendExtQueue(msg_send_ext_queue) Implement: mcu\adaptation\src\stack_ltlcom.cInternal queue(Intra-task queue, mod to mod(In the same task)) Reseive message:receive_msg_int_qSend message:msg_send_int_queueImplement: mcu\adaptation\src\stack_ltlcom.cCircular queue(MMI only, default size 30)Reseive message (From MMI Task):OslReadCircularQSend message (For NVRAM Access):OslWriteCircularQImplement: mcu\plutommi\MMI\Framework\Osl\OslSrc\Queue.cTimer Usage for MMI AppsStack TimerKAL serviceskal _XXX_timer () …Event Schedulerevshed _XXX_event () …L4StartTimer ()L4StopTimer () …OslStartSoftTimer ()OslStopSoftTimer () …MMI AppsEventGprot.h EventGprot.h StartTimer ()StopTimer () …StartMyTimer ()StopMyTimer () …WrapperGprot.h WrapperGprot.h WrapperGprot.hWrapperGprot.h WIN32OslIntStartSoftTimer ()OslIntStopSoftTimer () …L4Dr.hL4Dr.h event_shed.hevent_shed.h stack_timer.h stack_timer.h stack_XXX_timer () …kal_release.hkal_release.hEvent HandlersEvent HandlersRegisters and executes application call backs for various eventsProtocol events¾the basic event¾Indicate by unique protocol event IDKey events¾One kind of protocol eventHighlight events¾Man-made event, base on key event¾Associated with hint infoFramework Layer Layer4/NS MSGSet handlerApplication LayerSet handlerExcClearclearExcprotocolEventHandlereventID entryFuncPtrFigure. Protocol Event HandlerSet Event Handler:void SetProtocolEventHandler(PsFuncPtr funcPtr, U16 eventID){protocolEventHandler[countOfProtocolEvent].eventID= eventID;protocolEventHandler[countOfProtocolEvent].entryFuncPtr= funcPtr;}Execute Event Handler:void ExecuteCurrProtocolHandler(U16 eventID,void* MsgStruct,intmod_src, void* peerBuf){PsExtPeerFuncPtr currFuncPtr=(PsExtPeerFuncPtr)protocolEventHandler[count].entryFuncPtr;(*currFuncPtr)(MsgStruct, mod_src, peerBuf);}Event ID:Seeplutommi\mmi\AsyncEvents\AsyncEventsInc\ProtocolEvent s.hkey downKey repeatLong press key up TYPE CODELayer 4 / NSFramework LayerApplication LayerMSGExcExcExcSet key handlerprotocolEventHandlereventIDentryFuncPtr L4KeyHandleSet key handlerClearClearFigure. Key Event HandlerKey Press Event:Set Key Event Handler:void SetKeyHandler(FuncPtr funcPtr, U16 keyCode, U16 keyType){currKeyFuncPtrs[keyCode][keyType] = funcPtr;}Execute Key Event Handler:void ExecuteCurrKeyHandler(S16 keyCode, S16 keyType){(*currKeyFuncPtrs[keyCode][keyType])}KEY_REPEATKEY_LONG_PRESS KEY_EVENT_UP KEY_EVENT_DOWN KEY TYPEKEY_ENDKEY_SENDKEY_RIGHT _ARROWKEY_WAP | KEY_ENTER |KEY_IPKEY_DOWN_ARROWKEY_LEFT _ARROW KEY_RSKKEY_UP_ARROW KEY_POUNDKEY_0KEY_STARKEY_9KEY_8KEY_7KEY_6KEY_5KEY_4KEY_3KEY_2KEY_1KEY_CLEARKEY_LSKKEY CODEKEY_QUICK_ACS |KEY_CAMERAKEY_VOL_DOWNKEY_VOL_UP L4C QueueSend Key Press MsgProtocol Stack/L4MMI keypad bufApp ScreenRead Key Press MsgCall Event HandlerKey press events flow[keyCode, keyType][keyCode, keyType]ExecuteCurrKeyHandlerRefer files:Keypad_def.c, Kbd_table.hHighlight EventsFigure. Highlight HandlerLayer 4 / NSFramework LayerMSGApplication Layer — Main MenuCategory ScreenBusiness Logicstandard_animated_matrix_highlight_handler_type2ExecuteCurrHiliteHandler_Exthighlight_mainmenu_phonebookRegisterHighlightHandlerregister_fixed_matrix_highlight_handler SetHiliteHandlerMMI_list_highlight_handlerExecute handlerMMI_matrix_highlight_handler MMI_circular_3D_highlight_handlerFunction Entry maxHiliteInfoMMI_fixed_list_menu Menu Control Block MMI_fixed_matrix_menuprotocolEventHandlerL4KeyHandleeventIDentryFuncPtr key downKey repeatLong press key up TYPE CODEHistory ManagerHistory ManagerHelps application maintain screen flow and store intermediate data.typedef struct_historyNode{U16 scrnID;FuncPtr entryFuncPtr;U8 *inputBuffer;U8 *guiBuffer;} historyNode;Structure of history nodeScreen ID -of screen to be savedEntry Function Pointer –to redraw the screenInput Buffer –to save running text data for this screenGUI Buffer –to save UI related information for this screenHistory mechanismEntry new screen function: {EntryNewScreen():ClearAllInterruptEventHandler AddHistory()Entry Function Screen ID Gui Buffer OldExitFunction()ClearAllKeyHandler()Draw screenRegister new key handler}Go back history function:{EntryFunctiondecrement //Delete top screen}Please refer to “EntryNewScreen”Screen History Idle ScreenScreen 1Screen 2Top Screen:Entry Function Screen ID History BufferOther Data History buffer Event Handler Screen ID Exit Function Entry Function Curr Screen Other DataGui buffer Event Handler Screen ID Exit Function Entry Function New Screen delete SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);History API ListEntryNewScreenU16 newscrnIDFuncPtr newExitHandlerFuncPtr newEntryHandler: NULL, if do not want add the new screen to history later void *peerBufAddHistory50Max capacity of history stack isOther APIDelete nodes from historyDelete ‘N’nodes from historyGo back ‘N’nodes in historyRetrieve history for a screenRetrieve input buffer for screenRetrieve UI buffer for screenDetail please refer to : \plutommi\MMI\Framework\History\HistoryInc\HistoryDef.hNVRAM AccessNVRAM AccessProvides wrappers for data storage and retrieval of data from NVRAM.Value¾ReadValue(nId,pBuffer,nDataType,pError);¾WriteValue(nId,pBuffer,nDataType,pError);Record¾WriteRecord(nFileId,nRecordId,pBuffer,nBufferSize,pError);¾ReadRecord(nFileId,nRecordId,pBuffer,nBufferSize,pError);NVRAM_Configuration_Guide_User.pdfNVRAM_Configuration_Guide_User.pdfFile System ManagementFile System ManagementProvides wrappers for data storage and retrieval of data from File SystemAPI¾Int FS_Open(const WCHAR * FileName, UINT Flag);¾int FS_Close(FS_HANDLE FileHandle);¾int FS_Read(FS_HANDLE FileHandle, void * DataPtr, UINT Length, UINT * Read);¾int FS_Write(FS_HANDLE FileHandle, void * DataPtr, UINT Length, UINT *Written);¾int FS_Seek(FS_HANDLE FileHandle, int Offset, int Whence);¾int FS_Delete(const WCHAR * FileName);¾int FS_GetFileSize(FS_HANDLE FileHandle, UINT * Size);FileSystem_Document_20050216_W05.09.pdfFileSystem_Document_20050216_W05.09.pdfUICategory ScreenCategory FunctionsThe category layer consists of a set of functions that an applicationcan use to define its User Interface.Each Category screen contains the following functions:Function to enter (display)Function to exitFunction to get the size of HistoryFunction to get the HistoryMMI ResourceImage, Audio, Strings, Fonts, Themes, Menu Tree.Category screen mechanismEvery category screen has a set of functions :ShowCategoryXXXScreen¾Register event handler ¾Pre-process UI element ¾Call redraw functionRedrawCategoryXXXScreen¾Draw screen using GDI functionsExitCategoryXXXScreen¾Reset function pointer¾Other operation depend on vary screensGetCategoryXXXHistorySize¾Be used to return the size of gui buffer & input bufferGetCategoryXXXHistory¾Be used to return the data of gui buffer & input bufferGetCategoryXXXData¾Be used to return input bufferExample: GetCategory157Data, GetCategory200Historyset_list_menu_category_history, get_list_menu_category_historyExample:void ShowCategory1Screen (STRING_ID Title,IMAGE_ID TitleIcon,STRING_ID LSKLabel,IMAGE_ID LSKIcon,STRING_ID RSKLabel,IMAGE_ID RSKIcon,INT NumberOfItems,STRING_ID*ListOfItems,BYTE*HistoryBuffer );Screen examplecategory3screencategory1screen category2screen ……ExitCategoryXXXScreen RedrawCategoryXXXScreen GetCategoryXXX1HistorySizeGetCategoryXXXHistory ShowCategoryXXXScreen ……CategoryXXX screen Category ScreenShowCategoryXXXScreen:{Init XXXScreen data;RedrawCategoryXXXScreen;}RedrawCategoryXXXScreen:{draw_title();show_fixed_list();show_left_softkey();show_right_softkey();}pixtel_UI_show_imagepixtel_UI_fill_rectangleCommon Screen:MMI ResourcesImages Audio Strings Fonts ThemesMenu TreeBMP PBM GIF JPEG MPEGimy midi mmf mp3mp4English S.Chinese T.Chinese Thai Arabic …8x913x1415x16ASCII Graphic 13x1411x1223x2415x16128x128128x160176x22096x64C 64x96C MMI Resources (1/5 :classification)Color SchemeButton Scrollbar Edit Icons Foreground BackgroundUI ObjectsImageList Text Font Main-menuSub-menuPhonebookSettings MessagesProfiles GamesCall HistoryServices Organizer MultimediaTitleStringStep 1: add string to ref_list.txtStep 2: add string ID to ENUM associated with appStep 3: using macro ADD_APPLICATION_STRING2Step 4: S8* my_string = GetString(MY_STR_ID);Using APP_BASE to guarantee the uniqueness of string ID ImageStep 1: put images in the folder assigned to appStep 2: add image ID to ENUM associated with appStep 3: using macro ADD_APPLICATION_STRING2Step 4: using image ID directly as parameterUsing APP_BASE to guarantee the uniqueness of image IDMenuParent menuUnique menu item IDHilite function and LSK handlerAssociated with screenAudioSkin LayoutAudio playerCalculatorFMRadioTheme Fonts TOOLS:MCT, MCU\tools\AudioResGen TOOLS:MCT, MCU\tools\AudioResGenMMI Resource (4/5 : Macro)ADD_APPLICATION_STRING2(STR_CAL_MONTH,"M","Chinese month");String ID, Value, DescriptionADD_APPLICATION_IMAGE2(IMG_CAL_ON,CUST_IMG_BASE_PATH"\\\ \EmptyImage.bmp","Icon for On Button.");Image ID, Path, DescriptionADD_APPLICATION_MENUITEM((MENU_CAL_TYPE, /* Menu ID */ORGANIZER_CALENDER_MENU, /* Parent ID*/1, /* Child number*/MENU_ID_CHILD_1, /* Child ID */SHOW, /* Hide or show*/NONMOVEABLE, /* Move attribute*/DISP_LIST, /* Display attribute*/CAL_STRING_LUNAR, /* String ID*/0)); /* ICON ID*/MMI Resource (5/5)World Clock Map Skin LayouterTheme Generator Audio Generator Font Merger,Font Splitter,Font Viewer,Font Customizer Preview Verify ImageMCT TOOL Mcu\tools\AudioResGen\*.*resource_audio.c resource_audio.h resource_audio.obj Audio City_Database.txt, City_Database_Coord.txt,Map, ref_list.txtplutommi\Customer\Images\PLUTO176X220\MainLCD\Video plutommi\Customer\Images\PLUTO176X220\MainLCD\FMRadio plutommi\Customer\Images\PLUTO128X160\MainLCD\Camera plutommi\Customer\Images\ProjectName\MainLCD\AudioPlayer New or old XXX.thm filepluto_large.bdf pluto_medium.bdf Pluto_small.bdf …….IDs: mcu\plutommi\mmi\AppXXX_dir\inc\AppXXXDef.hPopulate:mcu\plutommi\Customer\Res_MMI\Res_AppXXX.c String files : Mcu\\plutommi\Customer\CustResource\ref_list.txt IDs: mcu\plutommi\mmi\AppXXX_dir\inc\AppXXXDef.hPopulate:mcu\plutommi\Customer\Res_MMI\Res_AppXXX.cImage files : Mcu\plutommi\Customer\Images\IDs: mcu\plutommi\mmi\AppXXX_dir\inc\AppXXXDef.hPopulate:mcu\plutommi\Customer\Res_MMI\Res_AppXXX.cPRIMAL FILEStandaloneRes.cgui_wrapper.c CustMiscData.c resource_world_clock_city.c resource_video_skins.c resource_fmradio_skins.c resource_camera_skins.c resource_audply_skins.c themecomponents.h, ThemeRes.cresource_font_jtbl.c FontType.c FontRes.c,L_1_Large.h,L_1_Medium.h……CustMenuRes.c resource_str_jtbl.c CustStrMap.c CustStrRes.c resource_image_jtbl.c CustImgMap.c CustImgRes.c,custimgdatahw.h SOURCE FILEStandaloneRes.objgui_wrapper.obj resource_video_skins.obj resource_world_clock_city.obj resource_fmradio_skins.obj resource_camera_skins.objresource_font_jtbl.objFontType.obj resource_str_jtbl.objCustStrMap.obj resource_image_jtbl.obj CustImgMap.obj CustMiscData.objOtherresource_audply_skins.obj App ResourceThemeRes.objThemesFontRes.objFontsCustMenuTree_Out.c CustMenuTreeID_Out.cCustMenuRes.obj Menusenum_list.hCustResList_out.txtCustStrRes.objStringsCustImgRes.objImagesTEMPORARY FILECOMPONENTCLASS。
腾讯MTK开发基础培训资料——经典
Protocol vendors
(Optimay, Condat…)
Software platform vendors (Symbian, Stinger, Linux, Palm OS…)
PowerManagement IC
Base-band chip vendors (TI, Infineon, Philips, Conexant, Motorola, ADI, Intel…)
手机OS初始化流程(1)
BootLoader启动过程:(Bootarm.s)
a)初始化中断向量表,注册中断处理函数。 b)设置C语言的堆栈,设置ro,rw,zi。 c)拷贝flash的数据段到内部ram或外部ram。 d)最后跳转到Nucleus 系统初始化__main处(其源代码不可见)。
手机OS初始化流程(2)
部分客户需要
替代合作名单中的软件 (如中文之星输入法) 合作名单中没有的类型(如OCR扫描软件)
其他
SP公司自行开发并推广的软件(如音乐在线播放客户端)
Nucleus OS简介
Nucleus OS是美国源代码操作系统商ATI公司推出的 新一代嵌入式操作系统,属于抢先式实时多任务操 作系统内核, 95%的代码使用ANSI C编写,便于移 植,在RISC上只占40K,以其优异的性能及源代码 开放特性在各个领域获得了广泛的应用。 MTK 操作系统是基于Nucleus OS一个实时RTOS。 Necleus OS提供嵌入式操作系统的核心,提供内存管 理、进程调度、线程管理、定时器机制、中断处 理、、信号、MailBox、MMI初始化等核心机制。
大陆布局
深圳 :手机、数字电视、光存储技术支持中心 北京:手机软件研发(CMCC定制,智能手机) 合肥:GIS系统 上海:高清认证实验室、手机技术支持办事处
Android入门基础培训 ppt课件
3)异步广播,通过Context.sendStickyBroadcast(Intent myIntent)发送的,还有
sendStickyOrderedBroadcast(intent, resultReceiver, scheduler, initialCode, initialData,
initialExtras)方法,该方法具有有序广播的特性也有异步广播的特性;发送异步广播要:
提供进程间通信的功能。 • Power Management(电源管理):比如电池电量等。
2021/3/26
Android入门基础培训 ppt课件
6
Android入门基础培训
2021/3/26
Android入门基础培训 ppt课件
7
Android入门基础培训
2021/3/26
Android入门基础培训 ppt课件
该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、
AMR、JPG、PNG等。
SGL:2D图形引擎库。
SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
OpenGL ES 1.0:3D效果的支持。
SQLite:关系
可嵌入的Web浏览器。 Content Providers:它可以让一个应用访问另一个应用的数据,或共享它们自己
的数据。 Resource Manager:提供非代码资源的访问,如本地字符串、图形和布局文件。 Notification Manager:应用可以在状态栏中显示自定义的提示信息。 Activity Manager:用来管理应用程序生命周期并提供常用的导航退回功能。 Window Manager:管理所有的窗口程序。 Package Manager:Android系统内的程序管理。
MTK 智能手机开发, android,安卓 AOSP学习笔记
对于5.0的系统是要求的ubuntu 12.041 新代码第一步执行:source build/envsetup.sh (此命令完成一些命令的初始化,配置了android编译的环境)2 执行lunch 命令(选择平台编译选项,用来让用户选择编译项,类似于旧框架的./mk listp)3 输入所需要编译的工程(这里需要编译82平台输入20),会显示相关的一些信息(1)A: ProjectConfig.mk路径:alps\device\farsighted\fars6582_wt_l(2)B: Drvtool路径:alps\kernel-3.10\tools\dct(3)C: Codegen.dws路径alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\dct\dct(4)D: flash时序表路径:alps\device\mediatek\build\build\tools\emigen\MT6582(5)E: flash配置文路径:alps\bootable\bootloader\preloader\custom\fars6582_wt_l\inc(6)F: 背光,键盘灯配置文路径:kernel :alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\leds\ mt65xxlk:alps\bootable\bootloader\lk\target\fars6582_wt_l(7)G: TP驱动路径:alps\kernel-3.10\drivers\input\touchscreen\mediatekTP 用户头文件配置路径:alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\touchpanel\ GT9XX新增TP还需要在以下文件增加编译路径:***新增TP还需要在以下文件增加编译路径:alps\kernel-3.10\drivers\input\touchscreen\mediatek\ Makefilealps\kernel-3.10\drivers\input\touchscreen\ KconfigTP mk文件配置(8)H: LCM驱动存放路径lk:alps\bootable\bootloader\lk\dev\lcm\ mt65xx_lcm_list.c配置文件:Lk部分mk文件配置:alps\bootable\bootloader\lk\project\ fars6582_wt_l.mkBOOT_LOGO有两处alps\bootable\bootloader\lk\project\ fars6582_wt_l.mkalps\bootable\bootloader\lk\dev\logo\ rules.mkKernel部分:lcm驱动:alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\此目录下只放.c文件,不需要文件夹alps\kernel-3.10\drivers\misc\mediatek\lcma:链接obj alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\ MakefileB:编译路径alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\ mt65xx_lcm_list.cC:kernel mk文件配置路径:alps\kernel-3.10\arch\arm\configs\ fars6582_wt_l_defconfigKerner config配置建议使用menuconfig命令make dir outmake O=out fars6582_wt_l_debug_defconfig(这是对应的项目配置文件)make O=out menuconfig(进不去的同学可看看后面的补充)(9)I: CAMERA 配置:1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2 hal目录3 驱动目录4 涉及修改的文件MT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\imgsensor\inc\kd_imgsensor.hMT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\imgsensor\src\mt6582\kd_sensorlist.hMT6582_L0\alps\vendor\mediatek\proprietary\custom\fars6582_wt_l\hal\imgsensor_src\sensorlist .cppalps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\camera\camera\kd_camera_hw.calps\vendor\mediatek\proprietary\custom\common\kernel\imgsensor\inc\kd_imgsensor.h(10)J: Gsensor,alps配置:1 1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2 驱动目录MT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\alspsMT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\ accelerometer3 custom文件alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\accelerometeralps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\ alsps4 makefilealps\kernel-3.10\drivers\misc\mediatek\alsps\Makefilealps\kernel-3.10\drivers\misc\mediatek\ accelerometer \Makefilealps\kernel-3.10\drivers\misc\mediatek\Kconfig.drivers此makefife加了后menuconfig后才有选项(11)K: Sound 配置1 1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2alps\vendor\mediatek\proprietary\custom\fars6582_wt_l\hal\audioflinger\audio\audio_custom_exp .h3编pl模块需先把项目名赋值我拿到的代码是需要做如下修改才能正常运行menuconfig,如果你们的正常可以忽略以下:Menuconfig需修改的地方:1 MT6582_L0\alps\kernel-3.10\Makefile修改如下:2 安装sudo apt-get install libncurses5 libncurses5-dev3 make O(大写字母O)=out menuconfig****需注意的是,如果编完后关闭了窗口再重新打开编译都要运行一次source build/envsetup.sh lunch一些常用编译命令:make –j24 2>&1 | tee build.log (相当于new命令,编译过程会生成build.log文件在alps目录下)-j后面通常是编译主机CPU支持核数2>&1, 表示将标准错误重定向到标准输出tee :同时将LOG输出到控制台和文件preloadermake –j24 pl 2>&1 | tee pl.loglkmake –j24 lk 2>&1 | tee lk.logkernelmake –j24 kernel 2>&1 | tee kernel.log clean commondm ,mm ,mmm,mma打包命令。
MTK生产流程和常见故障维修培训课件(PPT42页)
4.1 发射软件介绍 4.2 射频维修思路 4.3 校准典型故障分析
MTK生产流程和常见故障维修培训课 件(PPT 42页) 培训课 件培训 讲义培 训ppt教 程管理 课件教 程ppt
MTK生产流程和常见故障维修培训课 件(PPT 42页) 培训课 件培训 讲义培 训ppt教 程管理 课件教 程ppt
4.1 发射软件介绍
芯片型号
校准数据写入读出
MTK生产流程和常见故障维修培训课 件(PPT 42页) 培训课 件培训 讲义培 训ppt教 程管理 课件教 程ppt
数据库文件
MTK生产流程和常见故障维修培训课 件(PPT 42页) 培训课 件培训 讲义培 训ppt教 程管理 课件教 程ppt
4、当中央处理器满足工作电压、时钟、复位三个工作条 件后开始整体运行起来;并通过地址总线、控制总线、数 据总线执行相应的开机程序和自检程序
2.3 不下载故障判断及维修
不下载故障可以采用电压法和通过下载软件的提示来判断 故障原因
不能连接软件的可以用电压法测量信号来大致确定故障原 因
首先要观察H接口是否虚焊或脱落,若有则加焊或更换
2、按下开机键,把ON/OFF信号电平拉低,由ON/OFF控制 单元产生/RESET(低电平有效)复位信号传送给中央处理 器及存储器,将其有效复位;电源输出以下几路电压:VDD (2.8V)、AVDD (2.8V)、VCORE(1.8V)、VMEM (2.8V)、VTCXO(2.8V)
2.2 MTK手机开机原理
MTK生产流程和常见故障维修培训课 件(PPT 42页) 培训课 件培训 讲义培 训ppt教 程管理 课件教 程ppt
3. 写SN序列号
MTK生产流程和常见故障维修培训课 件(PPT 42页) 培训课 件培训 讲义培 训ppt教 程管理 课件教 程ppt
安卓系统培训教程课件
1、Android操作系统的基本按键
•安卓系统培训教程
以华为 C8500为 例,其他 Android
系统的手 机基本都 通用。
2、手机上的指示符图标含义
手机上的指示图标有很多种,每种都有自己不同 的含义,这里就给大家展示一些常用的状态指示符 图标,根据图标就能知道手机的状态。
•安卓系统培训教程
Android2.2
联想乐Phone
MOTO XT800 酷派 N930 MOTO XT806 MOTO XT301 葳朗 E737 海信 EG968
三星I909 酷派N930 华为C8500 华为C8600 中兴N600 中兴R750 MOTO XT301
MOTO XT800+
•安卓系统培训教程
一、Android操作系统简介和主要机型 二、Android系统手机的基本设置 三、Android系统手机与电脑的连接 四、Android系统手机软件的安装和卸载 五、Android系统手机常见的问题
3、基础设置,以网络的切换为例
基本设置
无线和网 络设置
移动网络
设置
WAP NET
的切换
接入点 名称
•安卓系统培训教程
4、网络的切换
第一步: 进入设置
第二步: 选择无线和网络设置
•安卓系统培训教程
4、网络的切换
第三步: 选择移动网络
第四步: 选择接入点名称
•安卓系统培训教程
4、网络的切换
第一步:进入设置 第二步:选择无线和网络设置 第三步:选择移动网络 第四步:选择接入点名称 第五步:切换即可。
安装前电脑需安装 Framework2.0组 件。如果没有安装,系统会 提醒你安装组件,否则无法 正常运行,点击安装会自动 下载并安装该组件。
MTK手机软件开发教程+高手必备
MTK手机软件开发教程高手必备编译工具和辅助工具:ADS1.2ADS12_update_842.exeMSYS-1.0.10.exeMinGW-3.1.0-1.exeImageMagick-6.2.5-5-Q16-windows-dll.exe7z313.exe2.MTK软件编译过程编译工具和辅助工具:ADS1.2ADS12_update_842.exeMSYS-1.0.10.exeMinGW-3.1.0-1.exeImageMagick-6.2.5-5-Q16-windows-dll.exe7z313.exe开始编译:切换到项目根目录,然后在命令行下面执行命令:make custom=proj gprs new其中,命令可以为clean, update, remake目标文件:生成的目标文件为.bin文件,位于MTK\build\proj 目录下面,build 目录为生成的一个目录。
Log文件:Log文件同.bin文件一样,也是位于build 目录下,如果编译出错,可以在命令行中看到出错的模块,然后到build 目录下找对应的log文件。
仿真环境:工程文件PixtelMMI.dsw 位于目录MTK\plutommi\mmi 下面,由此可进入仿真环境。
烧写程序:工具Flash_tool.exe 可烧写程序。
该工具的主要设置是COM口和目标文件位置。
Download argent 和scatter file 用自带的就可以了,选中这两项后,会出现ROM的选择项,点击后可选择.bin文件。
如下图:设置好上面的参数后,连接上手机,将手机断电,然后按开机键就可以烧写程序了。
Trace 工具在手机上往往要做一些trace,这就要用到trace工具---Catcher.exe。
手机上打trace 接口为kal_prompt_trace,如同agere平台的GSMprinf.使用Catcher.exe,要先要设置DataBase,这个文件是在编译的时候生成的,是个没有扩展名的二进制文件,该文件位于\MTK\tst\database_classb,例如,BPLGU..。
Android基础知识培训培训
23
七、Android手机常见问题解答:
1、如何更换主题:Android系统,默认就是一个主题, 且系统没有自带工具可以更换主题,只能借助第三方工 具来更换主题:例如----91手机助手。 2、如何安装程序:Android手机的安装包文件扩展名 为.apk,在电脑上看起来像是一个压缩包。不用解压, 只要扩展名对应即可。点ES文件浏览器,浏览到相应的 安装包.apk,直接点击即可开始安装。
11
四、Android重点版本的主要特性
1、最早的1.1版本
2、1.5版本增加功能,Android表现出来的能力才真正 吸引了开发者的目光。用户界面得到了极大的改良。
12
四、Android重点版本的主要特性
3、1.6版本增加功能:
搭载Android 1.61的HTC Hero获得了意想不到的成 功。Android最终获得了非Android用户的关注,并且 也让竞争者苹果和微软更加警惕了。
26
七、Android手机常见问题解答:
10、为什么会提示内存不足:Android是一个多任务 的操作系统,在使用的时候,请多多留意开启了多少窗 口,因为手机屏幕小,不能像电脑一样将所有开启的窗 口都最小化的显示到桌面来,于是要借助任务管理器, 请点开始——任务管理器,查看正在运行中的窗口,长 按可以切换到,也可以结束掉。请多多留意,并结束掉 不用的窗口。否则会因为后台运行程序越来越多,导致 内存资源耗尽,速度越来越慢甚至死机。
3
一、 Android的简介
2、Android的发展历程
2007年,Google联合了34家厂商并成立了“开放手 机联盟”,由Google组织团队进行开发,打造出开源移 动操作系统Android。Android 作为Google企业战略的 重要组成部分,将进一步推进“随时随地为每个人提供 信息”这一目标的实现。该平台由操作系统、中间件、 用户界面和应用软件组成,号称是首个为移动终端打造 的真正开放和完整的移动软件。 自 2009年2月Android 1.1 发布以来,备受瞩目,随 之1.5、1.6 、2.0/ 2.1 、2.2/2.3等陆续面世,至此 Android以它的系统安全性高、界面美观、操作方式直 观便捷、良好的软件开放性等一举成为最受市场期待的 4 移动智能系统。
android培训2篇
android培训2篇【篇一】Android开发培训的必要性与优势随着智能手机和平板电脑的普及,Android操作系统越来越受到大众的欢迎。
而Android开发已成为当下热门的技能之一。
那么,为何有必要学习Android开发呢?1.高薪就业前景广如今,Android开发的职位求职量之大已经不是什么秘密了。
在过去的几年中,业内已经出现了多达数万个 Android开发相关的工作岗位。
在 2021 年,预计 Android 所属的移动应用开发市场规模将达到 1000 亿美元,因此,学习Android开发将是您获得更好的职业前景和高薪水的有力支撑。
2.移动互联网发展迅猛随着移动互联网的飞速发展,移动设备的销量日渐增加。
适应移动设备并使其正常运行的应用程序的开发对于所有企业和组织都非常重要。
Android正好就是一个基于移动设备开发的操作系统,学习Android开发为你提供更多切入点,能让你更好地掌握移动应用领域的一些核心知识,深入理解移动应用和手机操作系统的运作原理。
3.多样化开发环境针对Android开发平台,有不同的开发工具和集成开发环境(IDE)可以选择,每个工具都能满足特定领域的开发要求。
有助于开发人员根据自己的实际需求扩展与调整应用程序的功能,开发出更多新颖的应用程序。
在Android培训中,您不仅会了解到基本概念和开发环境,同时还能与其他Android使用者分享经验,提高和完善自己的开发技能,进一步提高市场竞争力。
4.开发时间和成本低与其他桌面应用软件的开发相比,开发Android应用程序花费更少的时间和成本,对于团队合作或独立开发人员来说都是非常重要的。
在这种情况下,使用支持移动设备开发的平台就显得更加重要了。
Android应用程序的开发可以采用多种开发环境和协作工具实现,大大降低开发周期和成本,确保更快的上市时间,从而带来更多的利润。
5.创建自己的应用程序Android开发与其他计算机编程语言一样,可以让你更好地体验创造应用程序的乐趣。
MTK入门培训教程ver0.2
MTK入门培训教程MTK入门培训教程 (1)一、搭建MTK环境 (1)1、安装ARM Developer Suite (ADS) version 1.2 (1)2、安装perl解释器 (1)3、安装VC6.0 (2)4、下载线驱动: (2)5、下载软件 (2)二、安装MTK使用工具 (2)1、代码编辑软件 (2)2、代码比较工具 (2)3、reflist.txt编辑软件 (2)三、软件使用方法 (2)1、Flash_Tool (2)四、MTK工程初步上手 (3)1、编译方法: (3)2、模拟器的使用: (3)3、如何在MTK上添加一个菜单和图片: (3)4,如何在MTK上创建一个新的application (5)五、入门可以参考的文档有以下: (5)一、搭建MTK环境1、安装ARM Developer Suite (ADS) version 1.2路径:mtk环境工具\konka_ads12\ads12安装步骤:双击setup.exe进行安装,按照提示进行安装。
安装结束后程序要求导入序列号,选择导入序列号文件,找到mtk环境工具\konka_ads12\ads12\CRACK,导入LICENSE.DA T 即可完成安装。
2、安装perl解释器路径:mtk环境工具\ActivePerl-5.6.1.626-MSWin32-x86-multi-thread.msi安装步骤:双击可执行文件按照提示完成安装。
3、安装VC6.0路径:mtk环境工具\vc_setup\vc6安装步骤:双击setup.exe安装提示安装即可。
安装完后将mfc patch中的文件拷入system32目录中。
4、下载线驱动:路径:mtk环境工具\6219B_USB_Line_Driver 2.0.1.1 (Recommend)prolific安装步骤:将下载线插入USB口中,弹出驱动安装窗口,安装提示将目录定位在上面得路径中按照提示安装即可。
MTK_PPT_Training
META
Drivers
L1 Protocol Stack
软件架构
v 下面3个部分组成该软件方案: v 1. MS Executable Software, which is the software running on the MS, includes the following modules
MMI Framework vHistory Manager:UI窗体的管理,MTK上面每个 窗体包含以下的信息:
§ 窗体的ID,窗体的唯一标识 § 窗体的入口函数Entry Function § 窗体中的数据buffer
vFramework用history stack的机制来维护整个MMI 的screen flow,新的窗体会把先前的窗体压入到 窗体历史栈中,在程序完成以后,Framework通 过这个机制返回到先前的画面。
MTK芯片介绍
v MT6228比MT6227增加TV OUT功能,内置3.0M camera处理IC, v 支持GPRS、WAP、MP3、MP4。 v MT6227: 与MT6226基本一样,PIN TO PIN,只是内置的是2.0M camera处 理IC。 v MT6228: 比MT6227增加TV OUT功能,内置3.0M camera处理IC,支持 QVGA显示屏。6228的性能主要体现在104mhz上,它的处理速度很快,另 外他的mp4编解码已经达到了专业水平cif/vga v MT6229: 在6228的基础上多了个EDGE GPRS功能,其他的一样。 v (EDGE, VoIP) 3M ARM 7 + DSP ( 104 Mhz) + EDGE GPRS + ALL Features of MT6228 v MT6230: 是6229的CostDown版本,与MT6229基本一样,只是内置了1.3M Camera。 (EDGE, VoIP) 1.3M ARM 7 + DSP ( 104 Mhz) + EDGE GPRS + ALL Features of MT6228 v MT6235: ARM9内核,MT6225的升级平台,和MT6223一样集成了PMU,且对 GPS有很好的支持,208M system clock,TVout,EDGE,mp3硬解码,mp4 软解码,但是效果很好,200M sensor。 v 6225+ EDGE, SAIC + Integrate PMIC (110nm). EDGE Platform. (Dual DSP, same as 6229)
MTK软件培训课程(一)--MTK程序架构分析
程序整体结构
这个入口也包含了一系列的入口函数地址,其 中还是那个MMI_task最为关键,可以称之为心 脏或消息泵。 在这个MMI_task里面,虽然看起来很复杂,而 且整个结构跟刚才的看起来一点都不像,但如 果再深入点去看看代码,去想想,应该发现这 个MMI的实质跟刚才那个简单的FMT进程 是一样的。 下面对其进行分析:
NVRAM相关
Nvram,nvram相当于PC上 的硬盘,里面保存了程序一些初始化信 息或者是记录保存,比如程序的日期格 式,游戏的最高分数是多少 Nvram包含BYTE数据,short 数据,double数据和程序特殊数 据4种类型。前3种类型用readv alue和writevalue函数 进行存取。
程序整体结构
1、从消息队列中获取消息,用到的是 OslReceiveMsgExtQ函数,其实那个只是#define OslReceiveMsgExtQ receive_msg_ext_q这样来的, 无非是用了一个define来把receive_msg_ext_q替 换。这样做的好处:MMI用到的是framework, 这样使framework很通用,以后要用于别的程序, framework也很好移植而不需要重写MMI进程
Camera模块分析
进入到preview状态实际上是执行到了 mmi_camera_entry_preview_state函数。 这这里,设置好按键处理程序,-〉 mmi_camera_preview_start-〉 mdi_camera_preview_start-〉 mdi_camera_previ了media_cam_preview里,MMI模块发Pr eview消息给MED模块。 并且把MMI线呈挂起,阻塞在那,只有等有 消息回应才继续执行
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内容提要
Android编译、调试环境搭建 � MTK Android编译、下载、启动 � Android 软件系统软件架构 � Android软件系统内存分配 � 总结 & Q/A
�
Android编译、调试环境搭建
�
Android编译环境搭建
� �
系统编译环境搭建 MMI应用层开发环境搭建 系统程序调试环境搭建 MMI应用程序调试环境搭建
用平台key来签名应用
�
Android.mk
LOCAL_PATH := $(call my-dir) Include $(CLEAR_VARS) # build all java files in the java subdirectory LOCAL_SRC_FILES :=$(call all-subdir-java-files) LOCAL_PACKAGE_NAME := LocalPackage LOCAL_CERTIFICATE := platform Include $(BUILD_PACKAGE)
�
重新制作uboot,kernel…目标库和临时文件
�
�
生成系统镜像
�
makeMtk用法例子
�
使用android原始函数和子程序,编译 AlarmClock程序包
� � �
$ source build/envsetup.sh $ cd packages/apps/AlarmClock $ TARGET_PRODUCT=ginwave75_gb2 mm
MTK Android编译
�
makeMtk用法
Usage: (makeMtk|mk) [options] project actions [modules] Options: -t, -tee : Print log information on the standard-out. -o, opt=bypass_argument_to_make : Pass extra arguments to make. -h, -help : Print this message and exit Projects: one of available projects. Actions: listp, listproject : List all available projects. check-env : Check if build environment is ready. check-dep : Check feature dependency. n, new : Clean and perform a full build. c, clean : Clean the immediate files(such as, objects, libraries etc.). r, remake : Rebuild(target will be updated if any dependency updats). bm_new : "new" + GNU make's "-k"(keep going when encounter error) feature. bm_remake : "remake" + GNU make's "-k"(keep going when encounter error) feature. mm : Build module through Android native command "mm"
编译一个依赖于静态库的APK
�
Android.mk
LOCAL_PATH := $(call my-dir) Include $(CLEAR_VARS) LOCAL_STATIC_JAVA_LIBRARIES := staticlibrary # build all java files in the java subdirectory LOCAL_SRC_FILES :=$(call all-subdir-java-files) LOCAL_PACKAGE_NAME := LocalPackage Include $(BUILD_PACKAGE)
�
其他工具
� � � �
MMI应用层开发环境搭建
�
Eclipse + Android sdk
� � � � � �
下载Java JDK 1.5版本以上 下载Eclipse 3.72版本 下载Android SDK,可根据开发需要下载所需要版本 的sdk组件 安装完这些基础软件后,进入eclipse中下载ADT, ADT是eclipse的Android支持包 创建AVD(Android Virtual Device),就可以启动 Android模拟器了 在Eclipse中编译完应用程序后,安装到AVD中进行调 试
Download Agent
�
DA为运行于目标板上的软件,用来执行下载请求 用来描述下载到Nand Flash中的分区地址
�
Scatter-loading 文件�Mtk软源自下载�系统下载过程
Mtk Android启动过程
�
MTK 系统启动过程
Android软件系统架构
�
系统架构图
Android软件系统架构
makeMtk用法
bootimage : Build bootimage. cacheimage : Build cacheimge. systemimage : Build systemimage. recoveryimage : Build recoveryimage. secroimage : Build secroimge. factoryimage : Build factoryimage. userdataimage : Build userdataimage. Modules: pl, preloader : Specify to build preloader. ub, uboot : Specify to build uboot. k, kernel : Specify to build kernel. dr, android : Specify to build android. NULL : Specify to build all components/modules in default. k <module path> : Specify to build kernel component/module with the source path. dr <module name> : Specify to build android component/module with module name .
makeMtk用法
emigen : Generate EMI setting source code. nandgen : Generate supported NAND flash device list. codegen : Generate trace DB(for META/Cather etc. tools used). drvgen : Generate driver customization source. custgen : Generate customization source. javaoptgen : Generate the global java options. ptgen : Generate partition setting header & scatter file. sign-image : Sign all the image generated. encrypt-image : Encrypt all the image generated. update-api : Android default build action (be executed if system setting or anything removed from API). check-modem : Check modem image consistency. upadte-modem : Update modem image located in system.img. modem-info : Show modem version gen-relkey : Generate releasekey for application signing. check-appres : Check unused application resource. sdk : Build sdk package. win_sdk : Build sdk package with a few Windows tools. banyan_addon : Build MTK sdk addon. cts : Build cts package.
系统程序调试环境搭建
�
系统调试环境主要在Linux下建立比较方便
� � � � � � � �
使用gdb命令行和带有图形界面的insight 把android系统编译成debug模式 通过adb shell启动shell找到要调试的进程 使用gdbserver :5050 –-attach pid Adb forward tcp:5050 tcp:5050 在linux下使用gdb prog 载入符号库和路径名就可以开始进行命令行调试了 Insight是图形程序终端,也可以用类似的命令
MMI应用程序调试环境搭建
�
MMI应用程序Java调试主要使用 Eclipse+ddms,在eclipse里面可以设置断点, 监视变量值,查看全局变量,在ddms中可以查 看打印的变量值和trace