嵌入式开发实践

来源:互联网 发布:mac steam 目录 编辑:程序博客网 时间:2024/06/06 03:54
2017/8/1
am3352 usb鼠标不显示:
1,首先usb驱动不行、咱也确定不了是不是 wince7、要usb正常使用鼠标才显示。
2,然后就漫长的找排除方法
网上看到别人写的:


我在用 BSP_WINCE_ARM_A8_02_30_00 代码开发AM335X wince7平台。
我想在用触摸屏操作 WINCE7 OS时, 能有鼠标箭头。 但是现在没有。


请大家教教我如何打开 鼠标箭头?


我自己也试着去调试代码, 但是发现 下面的函数始终没有被调用:


SCODE
OMAPDDGPE::SetPointerShape(
GPESurf *pMask,
GPESurf *pColorSurf,
int xHotspot,
int yHotspot,
int xSize,
int ySize
)


但是下面的两个函数被调用了 


SCODE
OMAPDDGPE::MovePointer(
int xPosition,
int yPosition
)


VOID OMAPDDGPE::CursorOn()


首先跟上面方法一样找
然后在public/oak/disp里面加打印信息
然后发现DrvSetPointerShape函数没有执行
然后开始移植另一个wince7.0 的bsp
2017/9/10
am3352 wince7 网卡分配不到正确IP 
发现是因为注册表 有个没有注册成功 打开即可
2017/9/19
am3352 wince7 
1,gpio控制不了 对比发现gpio1 gpio3 clk 没有使能
  EnableDeviceClocks(AM_DEVICE_GPIO1,TRUE);


2017/9/21
am3352 wince7 
1,中断不产生 对比发现OALIntrEnableIrqs 相关函数设置寄存器不对函数


2017/9/25
am3352 wince 7
1,声卡放音死了 在main.c配置gpio模式 正常
2,报stdafx.h文件找不到重新生成解决方案
3,bsp_padcfg.h文件配置不生效 在main.c初始化配置正常 发现bsp_padcfg.c调用失败修改正常
4,进系统发现flash 存储空间小,ramdisk占96M 后来发现是因为nk.bin存储在flash里面
5,客户报This virtual machine is configured for 64-bit guest operating systems Howeve,64-bit operation is not possible
让他截图发现vt-x要使能 进bios找cpu选项里的enable搞定
客户报svga 将设置3d模式禁用
6,烧写系统nand启动不来 对比发现烧写xlnand ecc是3改成4即可


2017/9/26
wince logo 显示异常 发现显示驱动是16位 的改成24位的显示logo正常不过启动显示不出图像
2017/9/27
wince logo
显示驱动改回16位的将.bmp显示是有888转成565 显示正常


2017/10/11
am3352 linux 文件系统制作
busybox 
编译器修改
进入busybox
更改makefile
CROSS_COMPILE ?=/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
tslib
更改buildmakefile
CROSS           = arm-linux-gnueabihf-
qt4
mkspecs\qws\linux-arm-g++\qmake.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++ -lts


# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_STRIP             = arm-linux-gnueabihf-strip


qt4创建文件失败
buildarm.sh 
target=/home/svs/svs/svs/usr/local/Trolltech/qt4.8.6-arm
mktarget.sh
SRC_DIR=/home/svs/svs/svs/usr/local/Trolltech/qt4.8.6-arm




2017/10/12
am3352 linux 电容屏触摸不生效更改内核加打印信息发现
0x44E10964 mode[0x17]
u32 *p = NULL;
    p = (u32*)ioremap(0x44E10964, 4);
    if (NULL == p) {
GTP_ERROR("Failed to pull up the interrupt pin.\n");

    }
   // *p &= ~(1<<3);//*p &= ~(1<<5);
    *p |= 1<<4;
    *p |=(1<<5);
    
    am3352 不支持usb鼠标
    顺带学习make menuconfig
make menuconfig 显示EDT FocalTech FT502 I2C Touchscreen support
makefile 显示obj-$(CONFIG_TOUCHSCREEN_GZSD_GT9XX) += gt9xx.o goodix_tool.o gt9xx_update.o
kconfig显示
config TOUCHSCREEN_GZSD_GT9XX
tristate "EDT FocalTech GT9XX I2C Touchscreen support"
depends on I2C
help
 Say Y here if you have an EDT "Polytouch" touchscreen based
 on the FocalTech GT9XX family of controllers connected to
 your system.


 If unsure, say N.


 To compile this driver as a module, choose M here: the
 module will be called edt-GT9XX.
 
 故而我们将
 hid support -usb hid 全选
 usb support-ochi ehci 全选
 
 am3352触摸
 查看触摸是哪个event
 cat /proc/bus/input/devices
 
 然后查看
 profile 
 export TSLIB_TSDEVICE=/dev/input/event1 
 查看qt4
 TSLIB_TSDEVICE=/dev/input/event1
 
 编译vsftpd-3.0.2.tar.gz
 报错arm-linux-gnueabihf- not found
 CC =arm-linux-gnueabihf-
 改成
 CC =arm-linux-gnueabihf-gcc
 
 显示文件大小
 使用ls -lht命令显示当前目录下的所有文件,其中有一列就是显示这个文件的大小。
如果要看一个文件夹的大小,可以用du -sh *


ftp 移植登录不进去 然后往下移植wpa


sysdeputil.c:(.text+0x2d1):对‘cap_set_flag’未定义的引用
sysdeputil.c:(.text+0x2ec):对‘cap_set_flag’未定义的引用
sysdeputil.c:(.text+0x319):对‘cap_set_flag’未定义的引用
sysdeputil.c:(.text+0x334):对‘cap_set_flag’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:29: recipe for target 'vsftpd' failed
make: *** [vsftpd] Error 1
在Makefile的LDFLAGS =       -fPIE -pie -Wl,-z,relro -Wl,-z,now后添加,-lcap,执行make clean然后执行make




重新制作文件系统所有sbin bin lib user 都拷贝busybox两里面的发现启动不了
然后对比拷贝sbin bin 还是一样
最后拷贝lib 可以启动 boa也可以


2017/10/16
ftp可以登录ftp功能
然后看了password文件  改了
路径/home/ftp 改成/可以 ftp到根目录 而不是/home/ftp了
改了之后发现只能读不能拷贝 
然后chmod 777 /
ok
重启发现ftp登录不进去
然后把2416vsftpd.conf拷过去ok


然后开始找之前那个库影响
No such user: root


cp ../lib2/libn* ./ -rf
拷贝之后ok




Error: selected processor does not support Thumb mode `rsc r8,r8,#0'




./configure --prefix=/dao/_install/madplay/ --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CPPFLAGS=-I/dao/_install/madplay/include LDFLAGS=-L/dao/_install/madplay/lib


1:
gcc -shared -fPIC -o 1.so 1.c
这里有一个-fPIC参数
PIC就是position independent code
PIC使.so文件的代码段变为真正意义上的共享


2:
/tmp/ccOmDdh7.s:51794: Error: thumb conditional instruction should be in IT block -- `movgt fp,r9'
这需要修改~/ffmpeg-0.5.1/config.mak,在OPTFLAGS(line:16)选项中添加:
-Wa,-mimplicit-it=thumb


3:编译添加库
编译报:undefined reference to 'pthread_create'
arm-linux-gcc -o lc300-led-test lc300-led-test.c -lpthread
添加库文件 -lpthread


4:拷贝库文件
bid3tag.so  libid3tag.so.0  libid3tag.so.0.3.0  libmad.so  libmad.so.0  libmad.so.0.2.1复制到目标板/usr/sbin/目录中 (复制时要注意链接文件,cp命令要加上-rfa


5:压缩命令
tar zcvf ../root.tar.gz ./*




6:alsa录音放音
arecord -d 20 -c 2 -t wav -r 8000 -f "Signed 16 bit Little Endian" /test1.wav
aplay test1.wav


7:查看可执行文件所依赖库
/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-readelf /dao/_install/madplay/bin/madplay -d


8
qt 的close和系统的close冲突。close(),close(fd)
原创 2009年09月28日 22:00:00 标签:qt /unix 2893
系统函数使用::来调用,所以close(fd)应该这样:
::close(fd);
其他函数亦然。
注意,别忘了加头文件:
 
#include <unistd.h>     /*Unix 标准函数定义*/  
#include <fcntl.h>      /*文件控制定义*/  


9触摸点击没反应
ts_calibrate没有移植qt4 event0没有改




10 重新做文件系统
1 busybox qt4 tslib已编译
2  cp /ptop/busybox1.17.2-icool3352-v1.0/_install/* ./ -rf
3  mkdir dev etc home lib mnt proc sys tmp var 
4 mknod console c 5 1
5 mknod null  c 1 3
6  cp /gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib/* ./lib/ -rf
7 cp /gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/* ./usr/lib/ -rf
6,7步省略
8
 cp ld-linux-armhf.so.3 ./lib -rf  加载器 这一步制作文件系统就可以启动有反应了
 cp libm.so.6 usr/lib/ -rf
 cp libc.so.6 usr/lib/ -rf
 cp ../rootfs3352/etc/* ./etc/ -rf
 cp ../rootfs3352/sbin/qt4 ./sbin/ -rf
 tar -xjvf target-qt4.8.6.tar.bz2
 cp ../rootfs3352/usr/lib/libts-0.0.so.0 ./usr/lib/ -rf
 
 cp ../rootfs3352/sbin/autoeth0 ./sbin/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp /dao/_install/madplay/bin/madplay ./sbin/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp /dao/_install/mplayer/bin/mplayer ./sbin/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp /dao/_install/alsa/bin/* ./sbin/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp /dao/_install/madplay/lib/* ./usr/lib/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp /usr/share/alsa/bin/* ./sbin/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp /ptop/3352/boa-0.94.13/src/boa ./sbin/ -rf


 cp /ptop/3352/vsftpd-3.0.2/vsftpd ./ -rf
root@gzsd-virtual-machine:/ptop/3352rootest/sbin# /gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-readelf -d vsftpd 
 cp /gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/libcrypt.so.1 ../usr/lib/ -rf


root@gzsd-virtual-machine:/ptop/3352rootest# cp /ptop/3352/wpa/wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant ./sbin/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp /ptop/3352/wpa/wpa_supplicant-0.7.3/wpa_supplicant/wpa_passphrase ./sbin/ -rf
root@gzsd-virtual-machine:/ptop/3352rootest# cp ../rootfs3352/sbin/wifi
wificonnect  wifiset      
root@gzsd-virtual-machine:/ptop/3352rootest# cp ../rootfs3352/sbin/wifi* ./sbin/ -rf


ftp不行
在Ubuntu里面
ftp 192.168.1.55
发现
root@gzsd-virtual-machine:/ptop/3352rootest# ftp 192.168.1.55
Connected to 192.168.1.55.
500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/usr/share/empty