自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 MTK socket 小结 5

很久没有跟新了,自己的承诺都没有兑现,对不起各位关注支持我的,更对不起自己。对于有些问题,没有回答的话,麻烦你再提一下,我找不清楚哪些回答了,sorry。 上次说到Demo的socket 链接,先看HTTP请求。 当然要理解这个,得知道一个HTTP请求是什么样子的和HTTP协议的交互过程。要详细了解 可以看 RFC 标准文档。简单来说,HTTP 协议是请求应答模式,客户端发一个请求,服务器短发一个答复。客户端说:要xxx网页,服务器就把xxx网页返回给你。交互就需要一个规范,这个就是请求和

2010-11-01 17:37:00 4226

原创 MTK socket 小结 4

昨天说了下socket基本几个函数,还有常用的是域名解析函数。 // 通过域名获得ip地址// is_blocking,是否阻塞,现在只支持none block,也最好用none block// mod_id 如果没有立即获得,那么当查询成完毕,将向该mod 发送消息// request_id 区分不同的DNS 查询结果。比如在同时查询两个以上,在返回的消息中,就可以通过id来进行区分,这个结果是哪一个查询结果// addr 如果直接查询到结果,比如命中cache,那么

2010-09-07 09:07:00 6616 2

原创 MTK socket 小结 3

在 MTK socket 小结 2 说了一个socket create 函数,不知道今天能说几个,create 了一个socket,就像打开了一个文件,可以对其进行操作,当然操作前要稍微进行一些设置。 //关闭socket 与 soc_create 成对使用kal_int8 soc_close(kal_int8 s) // 绑定一个socket 到 一个指定的ip地址 和 端口。主要用于服务器短开发// 一般ip 地址全 0,端口就是想

2010-09-05 18:03:00 7343 2

原创 MTK socket 小结 2

今天主要讲一下MTK socket 基本接口。MTK socket 主要是基于 Berkeley sockets,用起来也就大同下异。MTK socket 主要有三种模式:block(阻塞),non-block(非阻塞),Asynchronous(异步),组合方式 也只有三种 1 block ,2 non-block,3 non-block + Asynchronous。 block模式下,调用相应的函数(接受或者发送数据),如果这个函数动作没有完成(没有发送或者接受完成),那么函数就不会反回,

2010-09-03 01:31:00 5120 3

原创 MTK socket 小结 1

移动互联网也炒了好几年了,现在开发手机也好,单独做应用也好,都会涉及到网络这一块。MTK 提供了网络功能,在GPRS上封装了socket 功能。MTK 上的socket 其实与linux 上的有些相似,其实说到socket 编程,只要封装实现了socket,那么基本上就要实现socket那些接口。 先来简单的介绍一下socket,socket 编程是介于 传输层 和 应用层之间,可以简单的理解为socket 就是封装了传输层的TCP 和 UDP 协议,使用户不用去封装一个 TCP 或者 UDP

2010-08-31 18:04:00 4963 2

原创 MTK HISTORY 小结 6

到这里其实主要history 机制主要得功能都基本ok了,其他的好多接口函数都是换汤不换药,主要就是删除history stack 里面的记录,怎么回调需要被删除的screen 的call back,具体就不说了。 GoBacknHistory 返回到前n个screen id,这个函数有时候还是比较有用,比如当写一个公用模块,处理完毕后,直接返回到调用的地方,这样就不用在意到底是哪个模块调用的,要回到哪里。当然用其他方法来实现,比如保存调用该模块前的screen id等等,但是没有这个函数来的方

2010-08-30 16:27:00 1475 2

原创 MTK HISTORY 小结 5

连续 一个多星期没写了,这段时间也公司也比较忙,连续加班又刷夜的,都快晕了,不过还是希望公司的产品能上线,也有点成就感。 还是继续 MTK 的 history 机制吧,主要的执行过程已近些完了。说白里,历史记录就是一个栈,先进后出,当然,严格的按照栈的特性,不够灵活,可能会从一个屏幕跳转到特殊的屏幕,这样就需要特殊接口。先把 GoBackHistory 说完,还有一个函数 decrement。 static U8 decrement(void){ // 这个变量是用

2010-08-29 17:19:00 1643 4

原创 MTK HISTROY 小结 4

在上两偏里,主要讲了进入一个app是需要用到的一个函数 EntryNewScreen,今天就说一下主动退出一个应用需要使用的函数 GoBackHistory,这个函数的作用就是退出当前app,回到上一个app。 在 GoBackHistory 这个函数里,没有什么内容,主要是 一个执行一个函数 ExecutePopHistory(),还有就是设置了 mmi_is_orderly_exit_screen = MMI_FALSE;  对于这个变量,也是一种特殊用法,只有当使用GoBackToHistory

2010-08-19 18:20:00 1386 1

原创 MTK HISTROY 小结 3

在  MTK HISTROY 小结 2 介绍了下,当进入一个新的app的时候,MTK 的history 机制 都干了些什么。 1 先把当前app屏幕信息保存到历史history stack 里面 2 回调当前app设置的退出函数,告知app已经被退出 3 清理按键和触摸屏event 和 相应的处理函数。这里需要注意的是对END KEY 进行了特殊处理。 4 设置当前active app 为新app。 说明一点,这里用app之间的切换来说明,其实这套history 机制,可

2010-08-18 17:38:00 1516 1

原创 MTK HISTROY 小结 2

昨天简单的介绍了下,MTK history 机制,今天还是具体来看代码吧。每个应用都会用得的一个函数  EntryNewScreen 开始,这个函数是进入应用是,一开始回调用的函数,这个函数告诉MTK history 机制,需要进入一个新的应用,原来的应用需要被退出(或者说挂起,保存到历史记录里),等到新应用退出时,从新回到该应用(或者说恢复状态,这个具体由应用来确定)。 /** newscrnID 新应用的屏幕id(一个应用可能会有多个 屏幕id)* newExitH

2010-08-16 17:44:00 1939 1

原创 MTK HISTORY 小结 1

MTK 的屏幕历史记录 history 机制也是开发中肯定要遇到的。简单的讲就是应用(界面)切换时,由一个正常的循序。比如A->B->C,那么最长见返回顺序就是C->B->A,这里的ABC可以是应用也可以是应用里的界面,也就是说,当在 某个屏幕按返回键时,能正常地返回到上一界面。从应用开发的角度来讲,应用完全可以自己实现一套机制,让应用自己界面切换顺序正常。但是如果应用之间的切换,那么就需要使用MTK history 机制。 history 实现也并不复杂,在进入一个新的应用是,先调用上一个

2010-08-15 19:50:00 1813 6

原创 MTK MMI event 小结 9

到这里 pen event 其实也就差不多了,说一下几个常用的函数: mmi_pen_enable /mmi_pen_disable  //打开/关闭 pen 事件 mmi_pen_set_calibration_data / mmi_pen_read_calibration_data  //设置和读取校准数据,校准数据总共四个值 x = x*x_scale + x_offset, y = y*y_scale + y_offset mmi_pen_start_calibration 

2010-08-12 17:41:00 1957

原创 MTK MMI event 小结 8

在 MTK MMI event 小结 7 中,说到,init 时候, 注册了触摸屏消息MSG_ID_TP_EVENT_IND 的处理函数 mmi_pen_touch_panel_event_ind, static void mmi_pen_touch_panel_event_ind(void *param ){ // 这个用于控制 只有一个 MSG_ID_TP_EVENT_IND 在 消息队列里 g_pen_is_driver_indication_in_q

2010-08-10 23:06:00 1964 2

原创 android 培训小结

今天去google 听了一个android 讲座,从1点到5点。时间感觉过的很快。主要讲了一些android的现状,开发一个应用UI 设计,一些 tips, 常用的component。听了,还是有一些收获,虽然没有达到我所希望的。 1)虽然自己平时也注意用户体验这方面,但是今天听了,发现自己跟没有一样。最简单一点,开发时需要考虑的第一件事情是,自己软件的对象是什么,什么年龄,什么区域,总值要调查好,这样来指导自己的设计。还有一点感觉就是要学会去分类,比如点击事件可以分为偶然事件和常用事件,自己是

2010-08-09 16:23:00 1685 1

原创 MTK MMI event 小结 7

到这,key event 的处理基本上就算完成了。其他几个常用的函数注册key 处理函数了。了解了按键event的处理过程之后(其实也是比较简单的),注册函数就很好了解了,就是把相应key 和 event 的数组里放入一个回调函数的指针。比如 void SetKeyHandler(FuncPtr funcPtr, U16 keyCode, U16 keyType) 抛开其他语句,就是一句简单的实现currKeyFuncPtrs[keyCode][keyType] = funcPtr; 还有可以

2010-08-09 15:57:00 3471 2

原创 MTK MMI event 小结 6

在 MTK MMI event 小结 5 中,提到了event 处理函数 mmi_frm_key_handle,这个函数主要作用是判断是否需要处理按键,从按键缓存里面持续的读取按键信息,然后调用 mmi_frm_convert_process_key_event 进行处理。这个函数没有什么可说的,最多是在屏幕旋转的情况下,把 导航键 转换一下,接着它调用了 ProcessKeyEvent, 这个函数主要是对于一些状态的处理,防止key down 和up 不成对,出现混乱。 void P

2010-08-08 15:56:00 3405 7

原创 MTK MMI event 小结 5

昨天说了一下key event 的基本情况,今天直接从代码开始吧 先看执行key event 函数 mmi_frm_key_handle   void mmi_frm_key_handle(void *paraBuff){ kbd_data k; U32 msg_count; mmi_eq_keypad_detect_ind_struct *p; // 判断参数是否为空 // 在 初始化时,系统就注册了 MSG_ID

2010-08-06 01:21:00 3297 2

原创 MTK MMI event 小结 4

这三天一直没有更新blog,打破了一天一篇的规律。周六日加了两天,再加上一天的通宵,实在有些累。不过再怎么说,感觉是给自己找借口,原来计划是不管多忙,都要更新。以后不会发生了,除非客观原因,比如没网,没电等等。 今天就饥饿着总结MMI event,今天打算说说key event。MTK 的 key envent 管理其实跟 MTK MMI event 小结 2 说的protocol event 机制也差不了多少,简单来说,就是app 通过注册某一个key 的回调函数,当这个key事件产生是,该机

2010-08-04 17:15:00 3361 3

原创 MTK MMI event 小结 3

昨天大概的说了下,普通 event 的执行过程。中间还有几个函数没有介绍,这里简单介绍一下   // 这个函数就是简单把 L4c 的interrupt消息,转换成 MMI 层interrupt的消息static mmi_frm_int_event_type mmi_frm_interrupt_event_converter(U16 event_id, void *msg){ mmi_frm_int_event_type frm_interrupt_event

2010-07-31 01:26:00 2289

原创 MTK task 小结 补充

今天忽然想到一个配置文件,跟task 有些关系,在实际过程中可能会用到。 文件是custom_config.c ,里面有些配置函数,用来配置系统信息,其中最常用的是改变MMI task stack的大小。 当集成一些库的时候,用的stack 可能比较大,这时候就需要修改task的大小,函数custom_config_task_stack_size kal_uint32 custom_config_task_stack_size(task_indx_type task_ind

2010-07-30 17:08:00 3094 2

原创 MTK MMI event 小结 2

昨天草草的写了几句,今天自己先复习了想写的东西,一看那么晚了,哎,都怪原来没有搞透,现在复习也有些地方不是很明白。如果有错误希望指正。 今天主要看分析,常用事件机制。做过MTK开发的童鞋应该知道要接受 MTK L4 层的消息,用一个注册函数 SetProtocolEventHandler,注册一个event 的 处理函数。比如短信,电话,电池电量,信号量等等都是通过 这个函数来注册消息。当L4 层,处理完封装事件后,就会把这个event 发送到MMI task 里来(消息发送可以看 MTK ta

2010-07-29 19:16:00 3866 3

原创 MTK MMI event 小结 1

在MTK MMI 里面有各种event,最常见的跟交互相关的 按键  event,触摸屏 event。跟各种具体事件比如电话event,短信event,电量event,信号量event,timer event等等。 MTK 都有相应的处理方式,跟交互相关的 按键(KeyBrd.c)和触摸屏(TouchScreen.c) 各有一套自己的机子,timer event 已经在 MTK timer 小结 3 介绍过,还有一套机制就是处理各种其他事件,它主要分为普通事件和interrupt event,i

2010-07-28 17:49:00 2910 2

原创 MTK task 小结 5

今天继续昨天的,说一下task之间的消息发送。 task 之间发送消息,第一是要添加一个消息 id,在custom_sap.h里面, /* Add customization message id here */MSG_ID_CUSTOM1_CUSTOM2 = CUSTOM_MSG_CODE_BEGIN,MSG_ID_CUSTOM2_CUSTOM1,MSG_ID_MSG_TEST, //添加了一个消息id 接下来是发送 M

2010-07-28 02:25:00 5997 1

原创 MTK task 小结 4

在 MTK task 小结 3  中写到创建一个MTK task,没有写完,今天把剩下的写完。下面需要介绍 创建task  信息的函数。 kal_bool task_test_create(comptask_handler_struct **handle){ static const comptask_handler_struct task_test_handler_info = { task_test_main, /* task entry function *

2010-07-26 16:38:00 4693 14

原创 MTK task 小结 3

在 MTK task 小结 2  中 大概描述了下 MMI task 的工作方式:从外部队列获取消息放入内部消息队列,内部消息队列根据消息类型注册的回调函数,进行调用(event 机制,这个又是MMI framework的主要部分之一)。 在MTK上,用户(开发人员)可以根据需要,创建task。 创建一个task 分为 4 步: 1 增加一个task index 到 custom_task_indx_type 2 增加一个mod index 到 custom_module_t

2010-07-25 17:20:00 4435 3

原创 MTK task 小结 2

虽然MTK手机,是feature phone(功能机),不像symbian 6 那样可以同时运行多个应用。但是MTK还是 有许多task组成。平时MTK的后台播放MP3就是一由一个task 完成的。具体以后分析。现在来看看MTK 最主要的task,MMI task,MTK 的应用程序都是在该task里面运行,它有一整套开发MTK 应用的framework。 先来看创建MMI task的函数 kal_bool mmi_create(comptask_handler_struct *

2010-07-24 17:28:00 7269 7

原创 MTK task 小结 1

MTK 的 基本执行单元是task, 从操作系统的角度来理解,task 有些像线程而不是进程,进程之间的地址空间是相互隔离的,说白点就是进程之间的全局变量是不相互干扰的, 而线程之间则是用同一个地址空间,MTK 的task 之间的地址空间也是共同的,也就是在MTK 编程里,定义了一个全局变量,那么在任何一个task里面都能引用, (这里举个例子,在实际编程过程中最好不要用全局变量,实在没有办法避开,那么全局变量也要分模块化,进行封装,  扯远了)。 所以说,MTK 的tas

2010-07-22 18:36:00 4034 9

原创 MTK timer 小结 4

昨天说到回调函数 L4CallBackTimer。 static void L4CallBackTimer(void *p){ // 在evshed_set_event 第三个参数中传得 timer noder // 这里转换这个指针 mmi_frm_timer_type *pTimer = (mmi_frm_timer_type *)p; // 得到timer id U32 nTimerId = pTimer->timer_info & (~N

2010-07-21 17:06:00 3452 11

原创 MTK timer 小结 3

在 MTK timer 小结 2 说道最常用的MMI timer 实现机制的初始化过程。今天继续忘下说,下面要说的是创建一个timer。MMI 层,启动一个timer,最终都会调用到 L4StartTimer 这个函数。具体来分析一下这个函数 // 参数 nTimerId 是要自己定义一个timer id,在 timerEvents.h 里的 MMI_TIMER_IDS 定义,用来区分timer// TimerExpiry 超时的回调函数// funcArg 回调函数回传的参数// nTim

2010-07-20 18:07:00 5066 4

原创 MTK timer 小结 2

在 MTK timer 小结 1 提到了两种timer,KAL timer 和 stack timer, 这两种timer 在平时用的比较少,在驱动开发,或者时间要求特别精确的情况下,使用 KAL timer, 一般在task要管理一组timer,用 stack timer 加上 event scheduler,后者就是今天要介绍的第三种timer。 event scheduler 处理的timer 时间精确性上来说,相对不是那么精确,对于上层app应用来说,是必不可少的。MMI 层的tim

2010-07-19 17:14:00 5656 7

原创 MTK timer 小结 1

MTK timer 有很多种,从最低层的KAL(kernel adpat layer)到MMI,都有timer的身影。 先来看一下KAL的timer KAL timer 是非常底层的timer, 它的实现是直接封装MTK的RTOS(nuleus)的timer,实现方式是由HISR,从而这种timer具有很高的优先级, 也就是说,当这个timer 超时时,就会触发一个HISR(高级中断 High Level ISR (Interrupt Service Routine)),这个中断会回

2010-07-18 16:50:00 7605 6

原创 MTK 内存管理简单总结 5

在 MTK 内存管理简单总结 4 提到,当内存不足时,可以调用 mmi_frm_appmem_prompt_to_release_mem 来显示后台应用, 让用户去选择关闭后台应用释放内存,下面看一下具体流程 当选者某一后台应用,选择stop 按键时,会触发 mmi_frm_appmem_prompt_screen_stop_highlighted 函数 (触发过程跟MTK的UI事件机制想关,以后分析)。 mmi_frm_appmem_prompt_screen_stop_highlightedsta

2010-07-17 17:01:00 2728

原创 android 学习 2

昨天好不容易在 虚拟机vm上把ubuntu 安装完毕,发现自己的本本实在是不堪重负,跑个ubuntu就够慢的了, 如果再要在其上面编译android,那速度可想而知了。不知道该怎么办了。。。。 不过还是把代码下下来了,虚拟机实在太慢,所以用cygwin 进行下载,一切到都挺顺利。 1 安装cygwin,注意选上git,在devel下面 2 安装repo    在cygwin 下 执行     curl http://android.git.kernel.org

2010-07-16 16:47:00 1112

原创 MTK 内存管理简单总结 4

MTK的ASM一套内存管理机制,也就是当共享内存不足时,可以要求后台应有释放共享内存,从而来保证应用的正常运行。 这套机制的实现在AppMemMgr.c里面,下面具体分析一下。 1 mmi_frm_appmem_prompt_to_release_mem, 当调用 applib_mem_ap_alloc 分配共享内存失败时,调用该函数,弹出“内存不足(out of memory)”提示框, 让用户选择想要停止得后台应用程序来释放内存。 mmi_frm_appmem_prompt_to_release_me

2010-07-16 16:35:00 3650 4

原创 android 学习开始

今天想开始学习android,现在也是在做手机framework之类的东西,想看看android 是怎么搞。 昨天下了个ubuntu, 今天想装,发现移动硬盘和电脑都快满了。 回来到现在一直整理东西,好多东西感觉舍不得删,可是在没地方放了, 发现狠下心一删,还有一些快感, 今天争取把 ubuntu 装完了,只能装vm上,然后开始下代码。

2010-07-15 16:03:00 1273 4

原创 MTK 内存管理简单总结 3

昨天说到了内存的分配。下面看一下内存释放 主要进行了3步: static void applib_mem_ap_free_int(void *mem_ptr){ /*----------------------------------------------------------------*/ /* Local Variables */ /*--------

2010-07-14 16:31:00 4425 4

原创 MTK 内存管理简单总结 2

在 MTK 内存管理简单总结  中,大体说了MTK的三种内存分配方式,对于第三种,也就是app buffer,是比较丰富的一种。 在 MTK 平台中也有许多具体的实现。在代码里搜索一下 kal_adm_create 就可以发现有许多地方使用了。 看一个比较典型的使用: 在文件app_mem.c里,有两个memory pool,一个是用于应用之间共享内存,另一个是用于屏幕内存。 第一种内存,主要是用于各种应用之间共享内存(以下简称ASM),这样可以节省内存,MTK实现了一种机制,可以在多个应用之间共享

2010-07-13 16:28:00 6641 9

原创 MTK 内存管理简单总结

<br />MTK 手机用的操作系统是 nucleus, 这是一个rtfs(实时操作系统),这个rtfs本身是不带内存管理功能,所以MTK自己写的内存管理。<br />(nucleus在系统初始化完毕时,会调用Application_Initialize,参数就是可使用内存的起始地址)<br /> <br />大体上来分,MTK内存可以分为3种:control buffer<br />平常使用的OslMalloc就是这个内存。<br />这个内存内部实现是按块来划分的(pool),具体的配置可以custom

2010-07-12 22:32:00 9323 4

原创 开博篇

<br />刚才不知道怎么回事,删了几个字之后,再怎么写字,都显示不出来,开局不利阿。。。<br /> <br />不知道是浏览器的问题,还是这个 编辑器的问题。<br /> <br />真的好好学习学习,怎么管理blog,怎么排版。<br /> <br />工作时间写blog ,不太好,今天就先到这了,回去再管理。<br /> <br /> 

2010-07-12 14:16:00 1078 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除