在我的调试过程中,我收到以下错误消息.
Alignment trap: my_main (29858) PC=0x00170ad8 Instr=0xe5960008 Address=0x00f28daa FSR 0x0f3
我看了一下,在这个实时嵌入式网站上发现了很多信息.所以现在我知道什么PC和Instr指的是,但我仍然没有找到任何关于Address和FSR部分.
什么是FSR?什么地址Address指的是什么?根据proc/xxxx/maps该地址甚至超出了我的计划范围.有人知道最后两项是什么意思吗?我需要有关这些的信息来解决这种对齐问题.
MAP输出
00008000-001fe000 r-xp 00000000 03:02 16204 /home/myuser/my_main
00205000-00248000 rw-p 001f5000 03:02 16204 /home/myuser/my_main
00248000-00299000 rwxp 00248000 00:00 0
40000000-40018000 r-xp 00000000 03:01 2095 /lib/ld-2.3.3.so
40018000-4001b000 rw-p 40018000 00:00 0
4001f000-40020000 r--p 00017000 03:01 2095 /lib/ld-2.3.3.so
40020000-40021000 rw-p 00018000 03:01 2095 /lib/ld-2.3.3.so
40021000-40023000 r-xp 00000000 03:01 15724 /usr/lib/libem7.so.1.0.1
40023000-40029000 ---p 00002000 03:01 15724 …Run Code Online (Sandbox Code Playgroud) 我正在为Linux制作我的第一个USB设备驱动程序,而我正在尝试连接触摸屏设备.
我使用Win7的默认触摸面板驱动程序在Win7中尝试过此设备.使用线路监视器/阅读器,我能够通过多点触控ENABLED获取原始数据.我们只是为了样本而说, 分别为第一次和第二次触摸的多点触摸数据头是[0x8301]和[0x8701].
现在多点触控DISABLED原始数据头将是[0x8101]
现在使用我为Linux制作的驱动程序,我只能输出[0x8101],这是一个单触数据头.
所以我猜测初始化代码的这一部分,我不得不对设备说它是一个多点触控设备.或者我可能错误地初始化它.
struct input_dev *input_dev;
input_dev = input_allocate_device();
input_dev->name = usb_mtouch->name;
input_dev->phys = usb_mtouch->phys;
usb_to_input_id(usb_mtouch->udev, &input_dev->id);
input_dev->dev.parent = &interface->dev;
input_set_drvdata(input_dev, usb_mtouch);
input_dev->open = mtouchdrv_open;
input_dev->close = mtouchdrv_close;
input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
input_dev->keybit[BIT_WORD(BTN_DIGI)] |= BIT_MASK(BTN_TOOL_PEN) |
BIT_MASK(BTN_TOUCH) | BIT_MASK(BTN_STYLUS);
input_set_abs_params(input_dev, ABS_X, usb_mtouch->x_min, usb_mtouch->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_Y, usb_mtouch->y_min, usb_mtouch->y_max, 0, 0);
input_set_abs_params(input_dev, ABS_PRESSURE, 0, usb_mtouch->press_max, 0, 0);
input_dev->absbit[BIT_WORD(ABS_MISC)] |= BIT_MASK(ABS_MISC);
Run Code Online (Sandbox Code Playgroud)
另外,我使用的是Linux 2.6.24.
谢谢!
濑