Thanks Robert.
I understand that you're the main maintainer of this kernel, so I'm sure 
there are plenty of demands on your time - therefore I appreciate you 
taking the time to reply.
I'm not sure that I follow exactly what you mean, but I'll do the relevant 
background reading and try the things you've suggested.

If any other uses would like to share their experience/advice regarding 
building 4.4 series kernels on the Beaglebone Black then I'd be interested 
to hear.

Regards
Tom.


On Monday, August 14, 2017 at 9:47:47 PM UTC+1, RobertCNelson wrote:
>
> On Mon, Aug 14, 2017 at 3:16 PM,  <[email protected] <javascript:>> wrote: 
> > Hi All, 
> > I'm new here and not familiar with the format of this forum, so I hope 
> I've 
> > posted this under the right categories. 
> > I appologise in advance because I'm sure you've heard this plenty of 
> times 
> > but: I'm having trouble building a kernel. 
> > 
> > If you are pressed for time you can cut to the chase by looking for the 
> > marker in chapter 5 below. 
> > 
> > 
> > ** 1. Background of this project: ** 
> > This is part of a commercial project which, if it bares fruit, we will 
> be 
> > publishing as open source. At the moment I'm putting a lot of my own 
> time 
> > into it to try and get us through the initial pain barrier and prove the 
> > concept. 
> > The project involves generating and receiving audio signals, for which 
> we 
> > will be building dedicated hardware. I need to write a driver for this 
> audio 
> > interface. 
> > 
> > ** 2. The end goal: ** 
> > I need to write a driver to transport two channels of audio in full 
> duplex 
> > over the I2S interface on the Beaglebone black to an external DAC and 
> ADC. 
> > In theory this should be simple (it should just be a modification of the 
> > existing audio driver), but the instructions are a bit vague. 
> > In order to be able to experiment with the driver, I want to be able to 
> > compile it as a module and load it into the kernel running on the 
> Beaglebone 
> > Black. I would also like the option of compiling in. 
> > 
> > ** 3. The immediate goal: ** 
> > On order to work with kernel drivers, I wanted a complete set of kernel 
> > sources that matched my running system. While I should not need to build 
> the 
> > entire kernel to compile my driver (because I can build this as a 
> module), 
> > it seemed reasonable that being able to compile a working kernel would 
> prove 
> > that my build environment was correct. 
> > What I'm trying to achieve is the ability to compile a kernel (and 
> matching 
> > modules) identical to those already in the distribution, as a starting 
> point 
> > for modification. 
> > Hope this makes sense so far. 
> > 
> > ** 4. The problems: ** 
> > While I've found plenty of instructions on-line regarding how to build a 
> > kernel for the BBB, they all seem to be different. So I suppose the crux 
> of 
> > my question is how is the kernel for the Debian distribution actually 
> built? 
> > 
> > ** 5. My latest failure: ** 
> > On a desktop machine, I cloned Robert Nelson's repository 
> > git clone https://github.com/RobertCNelson/linux-stable-rcn-ee 
> > 
> > I then checked out the source matching the kernel running on the 
> beaglebone 
> > into a new branch called 'tmp' 
> > (uname -r on the beaglebone reports 4.4.54-ti-r93) 
> > cd ./linux-stable-rcn-ee 
> > git checkout 4.4.54-ti-r93 -b tmp 
> > 
> > I asked git to ignore its own hidden files when exporting 
> > echo .gitattributes export-ignore > .gitattributes 
> > echo .gitignore export-ignore >> .gitattributes 
> > git add -f .gitattributes 
> > git commit -m "Ignoring .git on archive" 
> > 
> > And then exported the working tree, to give a "traditional" tarball of 
> the 
> > kernel source tree, about 600MB in size 
> > git archive --format tar --output ../linux-src.tar HEAD 
> > 
> > I then copied this tarball to the beaglebone and unpacked it into 
> > /usr/src/linux 
> > The beaglebone was running a fresh installation of the disk image 
> > bone-debian-8.7-iot-armhf-2017-03-19-4gb 
> > 
> > I then created a directory under /root for the output of the build 
> process, 
> > so that I could see what it has done, and to keep the source tree clean. 
> > mkdir /root/kbuild 
> > 
> > cut to the chase: 
> > Now, there was no .config in the root of the source tree, and no 
> directory 
> > of example configs supplied with it. I therefore ran 
> > make O=/root/kbuild menuconfig 
> > and accepted the defaults. This generated a .config as expected. 
> > I have a feeling this may be a problem. Surely building the correct 
> kernel 
> > depends upon a specific configuration, but I couldn't see any 
> instruction as 
> > to where to find one. 
> > 
> > I then proceeded as normal with 
> > make O=/root/kbuild zImage 
> > make O=/root/kbuild install 
> > Obviously, install complained because I hadn't built the modules, but 
> this 
> > shouldn't matter because the freshly built zImage should be identical to 
> > that already in /boot. 
> > 
> > The freshly-compiled kernel was installed as 
> > /boot/vmlinuz-4.4.54 
> > whereas the original was 
> > /boot/vmlinuz-4.4.54-ti-93 
> > 
> > When I attempted to boot the new kernel, I got nothing. No boot 
> messages, 
> > not even a video signal. 
> > 
> > 
> > Now I'm obviously misunderstanding something, and it's probably quite 
> > simple. However I'm baffled by the multitude of slightly different 
> HOWTOs, 
> > out-of date documentation and instructions that don't match the systems 
> > they're describing. 
>
> Depending on what calls you use in your module, the pre-built 
> linux-headers, should work. 
>
> sudo apt update 
> sudo apt install linux-headers-`uname -r` 
>
> If they don't, use "yakbuild".. 
>
> https://github.com/RobertCNelson/yakbuild 
>
>
> git clone https://github.com/RobertCNelson/yakbuild 
> cd ./yakbuild/ 
> cp recipe.sh.sample recipe.sh 
>
> in recipe.sh: 
>
> change: kernel_tag="4.4.68-ti-r106" -> kernel_tag="4.4.54-ti-93" 
>
> Then run ./build_kernel.sh to populate ./KERNEL/ directory.. 
>
> add your module/etc to the "./KERNEL" directory, and use: 
>
> ./tools/rebuild_deb.sh 
>
> to make *.deb file you can copy to your beaglebone to install.. 
>
> Regards, 
>
> -- 
> Robert Nelson 
> https://rcn-ee.com/ 
>

-- 
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/10857c0a-106d-4a23-9c64-6e71499f32f7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to