出于兴趣和学习目的,我根据www.linuxfromscratch.org上的描述从头构建了Linux (LFS+BLFS,都是10.0版本)。
总的来说,操作系统可以启动,我基本上可以使用它。有几件事不顺利,所以我想在这里向专家们请教。
我想去AVRDragon, Atmel微控制器的程序员。为了在Linux上使用它,我使用了"avrdude_"程序。我的目标是学习avrdude如何工作以及如何与操作系统交互。因此,我想用调试信息从源代码构建它。
要从源代码构建avrdude, libusb/libusb_1_0和libelf是必需的。我知道libusb_1_0是与BLFS一起安装的。Avrdude请求libusb和/或libusb_1_0。我不能说只有libusb_1_0是否有问题。(libusb_1_0比libusb更新,不是吗?)另外,我已经安装了libelf(因为libelf已经安装,我不能再构建内核了,但现在这应该不是问题)。在内核中,USB支持是启用的(设备驱动程序->USB支持->支持主机端USB).
我创建了一个udev规则:
# Dragon
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", GROUP="plugdev", MODE="0666"
…lsusb这样写:
# lsusb
...
Bus 003 Device 006: ID 03eb:2107 Atmel Corp. AVR Dragon
...
此外,我使用脚本将示例应用程序编程到微控制器上,该微控制器在我的参考系统上工作。
然而,在我的BLFS上运行avrdude,我得到一个错误消息,avrdude不是用USB支持构建的:
# avrdude -p m328p -c dragon_isp -B5 -F -P usb -V -U flash:w:Debug/hello_world.elf
avrdude was compiled without usb support.
avrdude done. Thank you.
查找internet,指示安装上述先决条件并设置udev规则。
我对Linux命令行、GCC工具链和常用的Linux工具有很好的了解。但我完全失去了如何正确配置我的BLFS与USB支持。有人能给我提示一下怎样解决这个问题吗?很多谢谢!
显然,要获得完整的功能,您需要libusb-1.0和libusb-0.1。configure.ac
脚本仅为前者定义HAVE_LIBUSB_1_0
,为后者定义HAVE_LIBUSB
,而包含错误信息的*.c
文件仅检查HAVE_LIBUSB
。
虽然当前的BLFS没有构建libusb-0.1的指令,但您可以在BLFS 6.3中看到libusb-0.1.12的指令。