- 博客(26)
- 资源 (2)
- 收藏
- 关注
原创 20101129
<br />查看依赖库 ldd<br />ldd直接可以看到,如果没有的话,<br /><br />arm-linux-objdump -x nfs_2.2/bin/qpe | grep NEEDED <br />前台直接退出<br />重新编译一个进行安装<br />先测一下实时上传<br />停止音频采集编码上传有问题<br />断开的时候本地显示没有停掉<br />通过描述数组来生成内存池<br />一个结构体指针数组,一个描述数组<br />实际上是从头取buffer,从尾上加入buffer<br
2010-11-30 10:10:00 312
原创 20101126
<br />在编译的时候需要加上<br />`pkg-config gtk+-2.0 hildon-1 --cflags --libs`<br />生存的可执行文件与Makefile在同一级目录下<br />$@ 生成的目标集<br />在命令行上也可以启动,但是gtk 会初试化失败<br /> <br />后台没有启动就没有办法获取设备名称<br />开机的时候就将后台启动<br />前台进程无法退出<br />最后的一个消息是不是已经发出?<br />加上一个消息后就可以正常退出了<br />向pro
2010-11-29 13:20:00 346
原创 20101125
<br />安装包的制作<br />如何生成deb包?<br />GUI的编译<br />命令 dpkg-buildpacket –rfakeroot<br />会在上一级生成一个deb包<br />语言包的获取<br />先使用xgettext 从源文件中获取字符串信息,生成po文件<br />再使用msgfmt 将po文件转换成文件<br /> <br />Mid 前后台参数的传递<br />采样的共享内存的方法<br />typedef struct<br />{ int
2010-11-25 19:00:00 398
原创 Gdbserver(1)
<br />Gdbserver<br /> <br /> 与gdb之间的通信可以是串口,也可以是tcp连接。在目标设备上运行的程序可以使strip过的,因为符号分析在gdb这端。<br /> 启动方式<br />如果是串口方式<br />Gdbserver /dev/com1 emacs foo.txt<br />如果是tcp的方式<br />命令的输入格式为<br />Gdbserver host:port emacs foo.txt <br />注意 host 为gdb的ip,port为local po
2010-11-23 00:45:00 461
原创 linux下的dump时机
<br /> 从ulimit 这个命令入手,这个是shell的内置命令<br /> 现在看一下ulimits的实现<br />Ulimit –a 的时候直接调用系统函数<br /> <br />功能描述:<br />获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。<b
2010-11-22 13:25:00 565
原创 dump 原理
<br /> <br />一 Windows上dump触发条件<br />在C++ 中,一般使用_beginthreadex来创建一个线程( 参见vs2003 中的threadex.c)<br />在用户指定的线程函数外,都有一个异常捕获<br />__try<br />{<br /> _endthreadex (<br /> ( (unsigned (WINAPI *)(void *))(((_ptiddata)ptd)->_inita
2010-11-19 18:44:00 1825
原创 linux 下dump的使用
<br /> Linux下dump的使用<br /> <br />1 Core文件的生成... 1<br />2 定位出错的地方... 2<br /> <br /> Linux下的dump文件一般称为core文件,可以用来记录程序崩溃前的线程callstack信息,内存信息等,可以作为排错的一种辅助手段。生存的core大小可以限制,保存的内容也可以灵活的选择,因此在MID上也可以使用。<br />由于linux的开发性,类似的调试技术比windows上的
2010-11-19 15:49:00 10504
原创 jni方式获取route信息
<br /> <br /> <br /> <br /> <br /> <br />1 遍历本机的路由信息... 1<br />2 获取到到指定IP的路由信息... 2<br />3 jni的用法... 4<br /> <br /> <br />1 遍历本机的路由信息<br />遍历出所有的route 信息,类似route PRINT <br />思路比较简单,直接用 GetIpForwardTable 获取本机的所有的路由信息,逐一遍历即可<br /> <br /> <br /> PMI
2010-11-19 15:43:00 751
原创 gdb(1)
<br />1 编译生成gdbserver<br /> <br /> 下载gdb的源码,进入gdbserver 目录<br /> <br /> ./configure –-host=arn-linux --target=arm-linux<br /> <br />然后make 生成gdbserver 。<br /> <br />最后 arm-linux-strip gdbserver<br /> <br /> <br />2 主框架流程<br /> <br />Server.c<br /
2010-11-18 23:52:00 327
原创 USB(11)
<br />usb_disable_interface <br />禁掉一个接口的所有端点<br />usb_unbind_interface<br />解除接口绑定<br /> <br />usb_driver_claim_interface <br />把一个驱动绑定到一个接口上<br />本质上也就是驱动和设备的关系嘛<br /> <br />usb_driver_release_interface<br />将一个driver与device解除绑定<br /> <br />Pxa310 的OTG<b
2010-11-13 19:50:00 972
原创 usb(10)
<br />Usb/core/driver.c 中提供的一些例程<br /> <br />先说一个结构体<br />Usb_device_id<br /> <br /> <br />struct usb_device_id {<br /> /* which fields to match against? */<br /> __u16 match_flags;<br /> <br /> /* Used for pr
2010-11-13 16:04:00 630
原创 Usb(8)
<br />usb_hub 有这样一个变量quiescing <br /> <br />如果这个值设置成 1,表示这个usb_hub 是静止的,驱动也就不会向所有的port 发送<br />请求状态的报文。<br />Hub_events走到这里就可以continue了<br />如果error 被设置了值,那就需要重启了<br />usb_reset_composite_device<br />首先需要判断这个设备的状态<br />如果是suspend 或者是noattach,那么就直接返回失败<br
2010-11-12 19:54:00 400
原创 Usb(9)
<br />Autoresume与 autosuspend<br />如果配置了电源管理,那么usb就有了上面的2种状态<br />在device 中有如下结构体<br /> <br />struct dev_pm_info {<br /> pm_message_t power_state;<br /> unsigned can_wakeup:1;<br />#ifdef CONFIG_PM<
2010-11-12 19:54:00 343
原创 Usb(7)
<br />在usb_init 中,有usb_hub_init<br />int usb_hub_init(void)<br />{<br /> if (usb_register(&hub_driver) < 0) {<br /> printk(KERN_ERR "%s: can't register hub driver/n",<br /> usbcore_name);
2010-11-12 19:53:00 408
原创 Usb(6)
<br />驱动pxa3xx-ohci 提供了设备的探测方法<br /> <br />ohci_hcd_pxa3xx_drv_probe<br /> <br />static int ohci_hcd_pxa3xx_drv_probe(struct platform_device *pdev)<br />{<br /> int ret;<br /> <br /> pr_debug ("In ohci_hcd_pxa3xx_drv_probe");<br /> <b
2010-11-12 19:52:00 583
原创 Usb(5)
<br />在pxa310 中查看host目录下的Makefile<br />是要编译出一个名为”ohci_hcd”的模块<br /> <br />对OHCI主控器进行编程要容易得多。控制器假设有一组端点(endpoint)可用,并知道帧中不同传输类型的调度优先级和排序。主控器使用的主要数据结构是端点描述符(ED),它上面连接着一个传输描述符(TD)的队列。 ED包含端点所允许的最大的包大小,控制器硬件完成包的分割。每次传输后都会更新指向数据缓冲区的指针,当起始和终止指针相等时,TD就退归到完成队列(don
2010-11-12 18:22:00 523
原创 USB(4)
while (1) { /* Grab the first entry at the beginning of the list */ spin_lock_irq(&hub_event_lock); if (list_empty(&hub_event_list)) { spin_unlock_irq(&hub_event_lock); break; } tmp = hub_event_list.next; list_del_init(tmp); hub = list_entry(tmp
2010-11-07 20:49:00 408
原创 Usb(3)
<br />Usb框架<br /> <br />1 Hub在host 向其询问状态的时候将位图返回<br />2 主机向hub查询改port的状态,并获取了该设备的基本特性<br />3 host 等待上电稳定后向hub 发送该port的使能请求<br />4 设备复位后,获取不超过100mA的电流,主机可以使用0地址与其通信<br />5 请求设备描述符<br />6 复位该port<br />7 请求设置新地址<br />8 通过新地址获取设备描述符<br />9 获取配置描述符<br />10 协商配
2010-11-07 19:39:00 469
原创 USB(2)
<br /> <br />物理上USB设备通过星型的分层总线连接到host上<br />但在逻辑上这些hub是透明的,各主机软件与USB直接相连<br />应用软件通过usbd发起IRQ请求,HCD响应IRQ 转化成USB 传输事务并进行排序<br />在一条共享的USB总线上进行数据传输<br />端点管道接口之间的关系<br />传输类型访问间隔包的大小<br />控制传输可靠的双向传输 3个阶段 setup 数据传输状态传输<br />控制传输控制管道格式<br />最大包长度高速设备为64个字节低
2010-11-07 18:13:00 290
原创 2011110702
<br />几种工作模式<br /> <br />1 Unicast<br /> 检查时区设置,改成东八区<br /> 创建接受UI ,mcu消息的消息队列<br />分配能够存放16个cif YUV数据的Buffer<br /> 与UI的通信,UDP 接受port 2071 发送port 2072 <br /> UI修改IP 数据库,通知后台,后台重新加载,去掉ewf<br /> UI修改了分辨率和颜色深度,vwall 加载数据库后,修改显示属性<br /> 初始化DDRAW,加载背景<br />更换背景
2010-11-07 16:35:00 264
原创 业务(20101107)
<br />MD中的每一个媒体接受对象在创建的时候就指定了对应的窗格,指定了监听的UDP port<br />这个指定的窗口还有各种各样的解码器对象,每个解码器都有自己的媒体处理线程,窗口当前使用的解码器需要把媒体处理线程的ID设置进这个媒体接受对象中。<br /> <br />接受对象的buffer<br />前面已经说了,是一个数组,构成一个逻辑环,一边存放从网络上接受的说数据,一边由解码线程取<br /> <br />MD整体上还是个console程序,使用到了win32,程序入口还是mainCRTS
2010-11-07 15:26:00 267
原创 产品业务流程1
<br /> <br />上级向下级请求媒体流<br />现在MC已经建立了自己专门的发送线程<br />如果其他线程需要发送消息(TCP),就抛到该线程进行处理<br />发送线程首先根据对应目标的ip,检索出对应的socket <br />如果找不到,且目标设备为下级MC 或mx 或rs<br />这个时候需创建新的socket ,连到目标IP port <br />还要将<ip ,socket及目标设备类型>对存放起来<br /> <br /> <br /> <br />MX <br />Mx 对应M
2010-11-07 01:09:00 458
原创 pxa310 u2d
Init 1有个人说 我要用笔创造一个世界 其实我也想Pxa3xx u2d Init 注册了一个平台驱动**************************************************************************/static struct platform_driver u2d_driver = { .driver = { .name = "pxa3xx-u2d", }, .probe = pxa3xx_u2
2010-11-06 00:09:00 754
原创 AT91
<br /> <br />1 udc_init_module. 1<br />2 at91_udc_driver5<br /> <br /> <br />Gadget AT91 <br /> <br /> <br />1 udc_init_module<br /> <br /> <br /> 注册了这样一个驱动<br />static struct platform_driver at91_udc_driver = {<br /> .remove = __exi
2010-11-04 15:38:00 754
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人