android&linux 编码遇到的问题

目录

目录

单片机硬件

板子问题

Suspending console(s) (use no_console_suspend to debug)

环境问题

编译android内核和文件系统,已经安装jdk,提示build/core/config.mk:268: *** Error: could not find jdk tools.jar

编译调试

加载.ko失败

/system/bin/sh: ./XXX: No such file or directory& warning: ISO C90 forbids mixed declarations and code


单片机硬件

分析设置之后通信的方面入手

2018/8/17 解决但需要优化,每次检查蓝牙是否设置过的时间太长

蓝牙恢复出厂设置 Reload 引脚

引脚1与13短接恢复出厂设置

US
USR-BLE
USR-BLE101 V1.0.
USR-BLE101 V1.0.
1.Hello OK.
2.AT into OK.
3.Read MAC OK.
4.Name change OK.
5.Hello change OK.
6.CommBaudrate change OK.

如果有字符串USR-BLE101 V1.0.说明蓝牙没被配置过,可以进入配置,如果无此字符串说明配置过,可以跳过蓝牙配置

先设置串口4波特率为57600与蓝牙通信,检查是否配置过,如果没有则配置,则配置,配置过则跳过配置,最后都要更改波特率为152000,

蓝牙进入出厂设置会返回字符串USR-BLE101 V1.0.

{0x0d,0x0a,'U','S','R','-','B','L','E','1','0','1',0x20,'V','1','.','0','.','5',0x0d,0x0a};

配置现象如下

1.Comm Baudrate change 115200.
2.AT into OK.
3.Read MAC OK.
4.Name change OK.
5.Hello change OK.
6.CommBaudrate change OK.
PIN 网络名称 功能
1 Reload 恢复出厂设置 Reload 引脚
2 Wake_Up 模块唤醒引脚
3 NC 悬空
4 AD 电池电量检测引脚
5 NC 悬空
6 VCC 1.9V 至 5.5V 无线模块电源
7 SWDLINK 程序调试时钟引脚
8 SWDIO 程序调试数据引脚
9 UART_TX 串口发送引脚
10 UART_RX 串口接收引脚
11 LINK 模块状态灯引脚
12 Rest 模块复位引脚
13 GND 模块电源地
14 VCC 1.9V 至 5.5V 无线模块电源



板子问题

Suspending console(s) (use no_console_suspend to debug)

然后就睡眠了,需要复位键才可以重新启动

问题分析

       android系统有earlysuspend和suspend两种休眠,earlysuspend是浅度睡眠,suspend是深度休眠。这个是由linux电源管理控制的,电源管理的接口是“/sys/power/state”和"/sys/power/wake_lock","/sys/power/wake_unlock",这个是linux是否休眠和是否进入深度休眠的关键点。只有wake_lock上锁了,linux系统就不会进入深度休眠。

问题解决

        从上分析可知,只要linux保持有一个唤醒锁,系统就不会进入深度休眠。那么解决问题的思路是在linux启动的时候添加一个唤醒锁就行了。在init.rc文件里面添加一个初始化项:

echo "PowerManagerService.noSuspend" > /sys/power/wake_lock

是通过adb命令实现的:

在adb shell端,往/sys/power/wake_lock写进一个变量,就能让linux一直唤醒,黑屏也不会睡眠。

echo aaa > /sys/power/wake_lock

关闭一直唤醒,把刚才的值写进/sys/power/wake_unlock即可
echo aaa > /sys/power/wake_unlock

然后就睡眠了,需要复位键才可以重新启动
 settings-->Applications-->Development-->Stay awake ??
在linux下,我喜欢用命令让系统进入休眠:
$ echo mem | sudo tee /sys/power/state
休眠:
sudo pm-hibernate
echo "disk" > /sys/power/state
sudo hibernate-disk
定时/延时关机:
shutdown -h 10:00
shutdown -h +30    //单位为分钟
重启:
reboot
init 6
shutdown -r now
待机/挂起:
sudo pm-suspend
sudo pm-suspend-hybrid
echo “mem” > /sys/power/state
sudo hibernate-ram



环境问题

编译android内核和文件系统,已经安装jdk,提示build/core/config.mk:268: *** Error: could not find jdk tools.jar

没有安装JDK

1:下载地址
2:安装:
sudo -s ./jdk-6u20-linux-i586.bin
3:配置环境变量
sudo vim /etc/profile
最后添加
export JAVA_HOME=/home/bestupon/jdk1.6.0_20  
export JRE_HOME=/home/bestupon/jdk1.6.0_20/jre  
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH  
4:使环境变量生效
source  /etc/profile
5:检验是否安装
java  -version
出现
java version "1.6.0_20" 
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)  
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)   

编译调试

加载.ko失败

root@android:/data/Test # insmod led_driver.ko                                 
led_driver: version magic '3.0.8-EmbedSky-g1dfbe89 preempt mod_unload ARMv7 ' should be '3.0.8-EmbedSky preempt mod_unload ARMv7 '
insmod: init_module 'led_driver.ko' failed (Exec format error)

/system/bin/sh: ./XXX: No such file or directory& warning: ISO C90 forbids mixed declarations and code

root@android:/data/Test # ./key_app                                            
/system/bin/sh: ./XXX: No such file or directory

编译时可能Ubuntu用的时动态库,编译时加上 -status应该就可以了

猜你喜欢

转载自blog.csdn.net/c1063891514/article/details/82143698