While the author attempted to cross-compile on an Ubuntu toolchain, I tried
to install it directly on by BBB running Debian.
So I installed the kernel headers:
sudo apt-get install linux-headers-4.4.9-ti-r25
The author's Makefile
DRIVER = bq76pl536
ifneq ($(KERNELRELEASE),)
obj-m += $(DRIVER).o
else
PWD := $(shell pwd)
default:
ifeq ($(strip $(KERNELDIR)),)
$(error "KERNELDIR is undefined!")
else
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
requires a variable called KERNELDIR which I defined as:
KERNELDIR=/lib/modules/4.4.9-ti-r25/build/
The output of make command is as under:
make
make -C /lib/modules/4.4.9-ti-r25/build/
M=/var/lib/cloud9/bq76_driver/bq76pl536 modules
make[1]: Entering directory '/usr/src/linux-headers-4.4.9-ti-r25'
Building modules, stage 2.
MODPOST 1 modules
WARNING: "crc8_populate_msb"
[/var/lib/cloud9/bq76_driver/bq76pl536/bq76pl536.ko] undefined!
WARNING: "crc8" [/var/lib/cloud9/bq76_driver/bq76pl536/bq76pl536.ko] undefined!
make[1]: Leaving directory '/usr/src/linux-headers-4.4.9-ti-r25'
While the .o, .ko etc. files are created. When I try to load the module
using insmod I get an error:
sudo insmod ./bq76pl536.ko
insmod: ERROR: could not insert module ./bq76pl536.ko: Unknown symbol in module
My dmesg output is as under:
dmesg | tail
[ 21.564768] eqep 48304180.eqep: failed to get clock
[ 21.605265] c_can_platform 481cc000.can: c_can_platform device registered
(regs=fa1cc000, irq=207)
[ 21.661309] c_can_platform 481d0000.can: c_can_platform device registered
(regs=fa1d0000, irq=208)
[ 21.768584] eqep: probe of 48304180.eqep failed with error -2
[161381.366409] bq76pl536: Unknown symbol crc8 (err 0)
[161381.366768] bq76pl536: Unknown symbol crc8_populate_msb (err 0)
[162501.175612] bq76pl536: Unknown symbol crc8 (err 0)
[162501.175973] bq76pl536: Unknown symbol crc8_populate_msb (err 0)
I cannot understand the origin of this error - compiler not being able to
find functions: crc8 and crc8_populate_msb, when they are defined in
crc8.h, which is accessible in the headers: /linux/crc8.h
On Saturday, August 13, 2016 at 1:14:48 PM UTC-7, Chintan Pathak wrote:
>
>
> Dear all,
>
> I want to install the device driver for a TI battery monitor - BQ76PL536A.
> The role of a battery monitor is to measure batteries voltage and do few
> other things.
>
> The code is hosted here : https://github.com/tommessick/bq76pl536 . It
> has Makefile and some instructions. The author also says he has tested it
> one Beaglebone black, but with Ubuntu.
>
> I am using debian: *uname -a*
> Linux beaglebone 4.4.9-ti-r25 #1 SMP Thu May 5 23:08:13 UTC 2016 armv7l
> GNU/Linux
>
> Will this device driver work with Ubuntu only ? If yes, what should I do
> to install the driver ?
>
> I have tried running the Makefile as is, also tried giving "KERNELDIR" =
> /usr/src/linux-headers-4.4.9-ti-r25 , which is the location of the current
> kernel headers, and I have tried using gcc to compile, all without success,
> on my current setup, on the BBB.
>
> Seems like there is some mention of cross-compilation, which means I need
> to do this on linux PC, (with Ubuntu). Does this require a
> cross-compilation setup compulsorily ?
>
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/967cc295-bfe5-448e-ac25-cec57bb2df72%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.