小编Syl*_*ard的帖子

绑定到另一个应用程序的服务

我写了两个应用程序(目标姜饼).让我们说app1和app2.App1有两个以"BOOT_COMPLETED"开头的服务,它们以返回值START_STICKY开头.它们在不同的线程中运行.使长话短说.其中一项服务是监视串行端口上的传入数据(一种代理,用于与串行端口另一端的接口通信的应用程序).另一个让听众观看一些系统状态并等待来自其他应用程序的一些"指令".我知道它们运行良好,因为它们列在正在运行的服务中,并且我添加了一些代码,当某些特定数据来自串行端口时,它会强制它们执行某些操作.

现在的问题是:我写了app2.它尝试绑定到app1中的某个服务.我使用了android-developper文档,并在app1和app2中的服务之间实现了双向通信.由于我只需要发送少量非常简单的数据,因此我建议使用信使.我基本上只使用"what,arg1和arg2"我没有使用AIDL接口,因为文档建议.

这是androidmanifest在app1中声明服务的部分我也尝试绑定.

    <service android:name=".ModemWatcherService"
              android:label="@string/app_name"
              android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <!-- Service name -->
            <action android:name="com.admetric.modemwatcher.Service" />
        </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)

然后,以下是在app1中处理此问题的几种方法:

    @Override
public IBinder onBind(Intent intent) {
    Log.d(TAG, "entering onBind");
    return mMessenger.getBinder();
}

/**
 * Handler of incoming messages from clients.
 */
class IncomingHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        String logMessage = "Received meaasge what= %d, arg1= %d, arg2= %d" + String.valueOf(msg.what) + String.valueOf(msg.arg1) + String.valueOf( msg.arg2);
        Log.d(TAG, logMessage);
        switch (msg.what) …
Run Code Online (Sandbox Code Playgroud)

binding android android-service

15
推荐指数
1
解决办法
1万
查看次数

更换Android内核中的触摸屏驱动程序

我正在为我的定制板调整姜饼内核.我正在尝试更换使用片上ADC控制器(三星的S5PV210处理器)的电阻式触摸屏.在我的设计中,我需要一个eGalaxyTouch驱动程序支持的电容控制器.它连接到USB.可以从"make xconfig"菜单轻松启用驱动程序.它有点工作,因为我在串行控制台上添加了一些跟踪,我可以看到它在内核启动期间安装,我看到它在连接/断开USB电缆时安装和卸载.但它在Android用户界面中没有做任何事情.它是一种HID类型的设备.问题是它没有与正确的Android触摸屏软件层连接.我一定错过了什么.必须要有其他东西来强制将此HID连接到管理触摸屏的另一个软件层.

触摸屏驱动程序位于内核/驱动程序/输入/触摸屏.内核/驱动程序/输入中也有一些代码.

有关如何将该HID设备链接到Android触摸屏图层的任何线索?我看看他们是如何做旧电阻的,而不是通过HID完成的,因为它是一个"定制"器件,其中ADC集成在CPU中,而不是通过USB.

android touchscreen device-driver linux-kernel android-source

7
推荐指数
1
解决办法
3万
查看次数

Logcat的日志时间戳不按顺序排列

我正在调试数据连接,事情发生的顺序很重要.我在终端中使用带有ADB时间戳的logcat,并收集我稍后分析的小时日志.我遇到的问题是,时间戳有时不是顺序的.由于Logcat是一个循环缓冲区,我不明白为什么会这样.所以,如果时间戳中存在错误或者事件实际上没有按顺序记录,我就会徘徊,我应该参考日志序列而不是时间戳(请参阅第8和第9行转换).有人知道吗?用于获取日志的命令是:

adb logcat -b radio -v time

和日志:

...
09-06 18:32:29.426 D/GSM     (  200): getNitzTimeZone returning America/Detroit
09-06 18:32:29.434 I/AT      (   65): AT(14)< +CGDCONT: 1,"IP","pda.bell.ca","",0,0
09-06 18:32:29.434 I/AT      (   65): AT(14)< OK
09-06 18:32:29.434 E/RIL     (   65): processRequest: OPERATOR
09-06 18:32:29.434 E/AT      (   65): ---AT+COPS=3,0;+COPS?;+COPS=3,1;+COPS?;+COPS=3,2;+COPS?
09-06 18:32:29.434 I/AT      (   65): AT(14)> AT+COPS=3,0;+COPS?;+COPS=3,1;+COPS?;+COPS=3,2;+COPS?
09-06 18:32:29.434 D/RILJ    (  200): [UNSL]< UNSOL_DATA_CALL_LIST_CHANGED [DataCallState: { cid: 1, active: 0, type: IP, apn: pda.bell.ca, address:  }]
09-06 18:32:29.434 I/GSM     (  200): NITZ: Setting time of …
Run Code Online (Sandbox Code Playgroud)

android adb logcat

6
推荐指数
1
解决办法
3207
查看次数

在Android上访问本机串行端口

我想让android应用程序/服务访问本地串行端口(UART RS-232)。当我说本机时,我的意思是真正的UART,而不是USB到串行加密狗。我可以从终端(连接到4个本机串行端口之一)上看到它们。它表明内核已经处理了底层的工作。

# ls -l /dev 
crw-rw-rw- system   system   204,  67 2010-01-01 07:00 s3c2410_serial3
crw-rw-rw- system   system   204,  66 2010-01-01 07:00 s3c2410_serial2
crw-rw-rw- system   radio    204,  65 2010-01-01 07:00 s3c2410_serial1
crw-rw-rw- system   system   204,  64 2010-01-01 07:00 s3c2410_serial0 
Run Code Online (Sandbox Code Playgroud)

我用姜饼。我已将Android移植到装有S5PV210处理器的平台上。我对内核和权限拥有完全控制权。我已经修改了很多东西(包括蜂窝电话,触摸屏,LCD面板尺寸等),包括init.rc文件。

如何通过Android APK与这些设备通话?如您所见,“ s3c2410_serial1”来自用户“ radio”,因为我从中获取Gingerbread源代码的原始系统在该串行端口上具有GPRS模块。在init.rc中更改很容易。但这只是证明我们至少可以访问Android系统上的本机串行端口。

应用程序或服务将不需要控制APK的波特率或任何奇特的东西。我只想发送和接收字符。内核可以设置默认波特率,对此我感到满意。我什至不需要控制RTS / CTS。

任何提示表示赞赏。

android serial-port

5
推荐指数
1
解决办法
1万
查看次数

内核驱动程序外部模块没有完全构建

我将一个外部驱动程序模块添加到Android Gingerbread内核(类似于Linux).我以前做过它并且它有效但这次我遇到了问题.我按照O'Reilly"Linux Device Drivers 3rd edition"中的配方进行操作,即:

在本地Makefile中,添加以下语句:

   obj-m := GobiNet.o  
   GobiNet-objs :=  GobiUSBNet.o QMIDevice.o QMI.o  
Run Code Online (Sandbox Code Playgroud)

在人类语言中,它意味着从GobiUSBNet.c + QMIDevice.c + QMI.c建立一个GobiNet.ko.

这适用于构建整个内核时调用makefile的情况.我在Ubuntu x86-64bit上交叉编译ARM-EABI系统(Cortex-A8).

不知何故,构建系统理解我想要的东西,因为它在编译期间说:

/home/sylvain/Projects/android_gingerbread_realv210_ver_1_0/kernel  
   CHK     include/linux/version.h  
   CHK     include/generated/utsrelease.h  
make[1]: `include/generated/mach-types.h' is up to date.  
   CALL    scripts/checksyscalls.sh  
   CHK     include/generated/compile.h  
   LD      drivers/cell/OptionGobiNet/built-in.o  
   CC [M]  drivers/cell/OptionGobiNet/GobiUSBNet.o  
   CC [M]  drivers/cell/OptionGobiNet/QMIDevice.o  
   CC [M]  drivers/cell/OptionGobiNet/QMI.o  
   LD [M]  drivers/cell/OptionGobiNet/GobiNet.o  
   Kernel: arch/arm/boot/Image is ready  
   SHIPPED arch/arm/boot/compressed/lib1funcs.S  
   AS      arch/arm/boot/compressed/lib1funcs.o  
   LD      arch/arm/boot/compressed/vmlinux  
   OBJCOPY arch/arm/boot/zImage  
   Kernel: arch/arm/boot/zImage is ready       
   Building modules, stage 2.  
   MODPOST 5 modules  
ERROR: "usbnet_suspend" [drivers/cell/OptionGobiNet/GobiNet.ko] undefined!  
ERROR: …
Run Code Online (Sandbox Code Playgroud)

makefile kernel-module

3
推荐指数
1
解决办法
5421
查看次数

如何在 Yocto 环境中进入 u-boot 的 menuconfig

我第一次将 Yocto 用于带有 Xilinx Zynq 的 ARM 嵌入式系统。我想进行一些需要进入 menuconfig 实用程序的配置更改。Yocto 文档展示了如何为 Linux 内核执行此操作

bitbake yocto-xlnx -c menuconfig
Run Code Online (Sandbox Code Playgroud)

其中,对于 Xilinx,我变成了

bitbake linux-xlnx -c menuconfig
Run Code Online (Sandbox Code Playgroud)

它运作良好。

现在,我想对 u-boot 执行相同的操作,并使用 menuconfig 实用程序更改 .config 文件。我在 Yocto 或 Xilinx 文档中找不到任何方法。我尝试了显而易见的

bitbake u-boot-xlnx -c menuconfig
Run Code Online (Sandbox Code Playgroud)

只是为了得到一条错误消息:

错误:目标 u-boot-xlnx 不存在任务 do_menuconfig

知道如何使用 Yocto 进入 u-boot menuconfig 吗?

编辑:这是我使用的图层

BBLAYERS ?= " \
/home/sylvain/poky/meta \
/home/sylvain/poky/meta-poky \
/home/sylvain/poky/meta-yocto-bsp \
/home/sylvain/poky/openembedded-core/meta \
/home/sylvain/poky/meta-xilinx \
"
Run Code Online (Sandbox Code Playgroud)

u-boot bitbake yocto

3
推荐指数
2
解决办法
7964
查看次数