GNU Radio on Zynq - trouble getting the user_peripheral kernel module to work

Hello lovely people,

I’m trying to recreate the FIR filter example based on the Zynq GNU
Radio wiki:
http://gnuradio.org/redmine/projects/gnuradio/wiki/Zynq.http://gnuradio.org/redmine/projects/gnuradio/wiki/Zynq
I’ve downloaded the prebuilt filesystem and managed to run GNU Radio
with an RTL-SDR dongle, there were some issues with the QT and WX GUIs
(QT was complaining about not finding some pyqt4 libraries, WX didn’t
exist in GRC - not sure if anyone else had similar issues), so I just
used the TCP blocks to actually view the output, which all worked quite
nicely. I’ve had some moderate success using Philip B.'s meta-sdr
layer on a qemux86 machine and on a Zedboard, but then again - no kernel
module for the FPGA.

My problem right now is that the prebuilt file systems in
http://gnuradio.org/data/sdk/zedboard_armv7a-sf-vfp-neon/ don’t seem to
have the user_peripheral kernel module to communicate with the FPGA. Is
it supposed to be in there and I don’t know where to look? Am I supposed
to cross-compile it on my host machine?

I tried to ‘make’ it inside Zynq, which didn’t work because it couldn’t
find the Kernel source headers (which as far as I’m aware should be
located somewhere in /usr/src/)

I also tried to bitbake the entire thing, which I haven’t really had
success with earlier, by including Jonathon P.'s meta-zynq-gnuradio
layer (GitHub - jpendlum/meta-zynq-gnuradio: OpenEmbedded layer to support GNU Radio's GSoC 2013 Zynq Project). My bblayers.conf
looked something like this:

BBLAYERS ?= "
/home/sarunas/oe-core/meta
/home/sarunas/layers/meta-zynq-gnuradio
/home/sarunas/layers/meta-xilinx
/home/sarunas/layers/meta-oe/meta-oe
/home/sarunas/layers/meta-oe/meta-python
/home/sarunas/layers/meta-oe/meta-networking
/home/sarunas/layers/meta-oe/meta-filesystems
/home/sarunas/layers/meta-sdr
"

And the local.conf was taken directly from Jonathon’s GitHub page
(https://github.com/jpendlum/meta-zynq-gnuradio/blob/master/conf/local.conf.sample).

I tried bitbaking gnuradio-dev-image, with multiple branch combinations
(masters and daisies), but end of the line is - I have no idea what I’m
doing. I don’t really know how to figure out which branches in
particular I should be using for this, thus everything just keeps
failing.

Obviously, I also tried the repo and oe-gnuradio-manifest path which is
described in the GNU Radio Zynq wiki, but that doesn’t seem to work for
me… After doign repo sync I got the following:

Fetching projects: 22% (2/9) Fetching project oe-core
fatal: Couldn’t find remote ref refs/head/master
fatal: Couldn’t find remote ref refs/head/master
error: Cannot fetch oe-core

error: Exited sync due to fetch errors

It fetched meta-xilinx and bitbake OK, but failed at oe-core. Haven’t
found anything useful in .gitconfig or any other config files. Then
again I’m not sure what I’m looking for. Anyways, if anybody has
experienced any of these issues, any help would be really appreciated.
At the end of the day, I just want to have a working hardware
acceleration example to study.

Thanks!

Sarunas

On 02/16/2015 10:56 AM, Sarunas Kalade wrote:

Hello lovely people,

I’m trying to recreate the FIR filter example based on the Zynq GNU Radio wiki:
http://gnuradio.org/redmine/projects/gnuradio/wiki/Zynq.http://gnuradio.org/redmine/projects/gnuradio/wiki/Zynq
I’ve downloaded the prebuilt filesystem and managed to run GNU Radio with an
RTL-SDR dongle, there were some issues with the QT and WX GUIs (QT was complaining
about not finding some pyqt4 libraries, WX didn’t exist in GRC - not sure if
anyone else had similar issues), so I just used the TCP blocks to actually view
the output, which all worked quite nicely. I’ve had some moderate success using
Philip B.'s meta-sdr layer on a qemux86 machine and on a Zedboard, but then
again - no kernel module for the FPGA.

WX is built for embedded builds. In general, I suggest running grc on a
desktop and moving the flow graph over.

My problem right now is that the prebuilt file systems in
http://gnuradio.org/data/sdk/zedboard_armv7a-sf-vfp-neon/ don’t seem to have the
user_peripheral kernel module to communicate with the FPGA. Is it supposed to be
in there and I don’t know where to look? Am I supposed to cross-compile it on my
host machine?

The kernel module is custom work so you would need to add it to the
system yourself.

I tried to ‘make’ it inside Zynq, which didn’t work because it couldn’t find the
Kernel source headers (which as far as I’m aware should be located somewhere in
/usr/src/)

Let me take a look at adding a package to the default images that would
let you build kernel modules on the zynq. I think some people did some
work recently to make that work.

I also tried to bitbake the entire thing, which I haven’t really had success
with earlier, by including Jonathon P.'s meta-zynq-gnuradio layer
(GitHub - jpendlum/meta-zynq-gnuradio: OpenEmbedded layer to support GNU Radio's GSoC 2013 Zynq Project). My bblayers.conf looked
something like this:

I’m guessing Jonathon’s stuff is suffering from bitrot.

"
Fetching projects: 22% (2/9) Fetching project oe-core
fatal: Couldn’t find remote ref refs/head/master
fatal: Couldn’t find remote ref refs/head/master
error: Cannot fetch oe-core

error: Exited sync due to fetch errors

Interesting. What repo init command did you use? I’d like to sort this
out.

Philip

Hey Philip,

Thanks for the reply. I’m fairly sure I was using the same repo init
command as shown in the wiki:
repo init -u git://github.com/jpendlum/zynq-gnuradio-manifest.git
repo sync

I tried the same thing just now on a relatively fresh Ubuntu (14.04)
install on my laptop, which resulted in the following:
$ repo init -u git://github.com/jpendlum/zynq-gnuradio-manifest.git

$ repo sync
Fetching project zynq-acp
Fetching projects:  11% (1/9)  Fetching project 

zynq-fir-filter-example
Fetching projects: 22% (2/9) Fetching project meta-sdr
error: Cannot fetch meta-sdr

error: Exited sync due to fetch errors

I also tried initing just the oe-gnuradio-manifest :

$ repo init -u git://github.com/balister/oe-gnuradio-manifest -b 

stable
(got the same using master, dizzy, daisy)

$ repo sync
Fetching project meta-fsl-arm-extra
error: Cannot fetch meta-fsl-arm-extra

error: Exited sync due to fetch errors

I’ll have access to the same machine I was using earlier tomorrow and
run the same things again to make sure.

Thanks.

Sarunas


From: Philip B. [email protected]
Sent: 18 February 2015 18:19
To: Sarunas Kalade; [email protected]
Subject: Re: [Discuss-gnuradio] GNU Radio on Zynq - trouble getting the
user_peripheral kernel module to work

On 02/16/2015 10:56 AM, Sarunas Kalade wrote:

Hello lovely people,

I’m trying to recreate the FIR filter example based on the Zynq GNU Radio wiki:
http://gnuradio.org/redmine/projects/gnuradio/wiki/Zynq.http://gnuradio.org/redmine/projects/gnuradio/wiki/Zynq
I’ve downloaded the prebuilt filesystem and managed to run GNU Radio with an
RTL-SDR dongle, there were some issues with the QT and WX GUIs (QT was complaining
about not finding some pyqt4 libraries, WX didn’t exist in GRC - not sure if
anyone else had similar issues), so I just used the TCP blocks to actually view
the output, which all worked quite nicely. I’ve had some moderate success using
Philip B.'s meta-sdr layer on a qemux86 machine and on a Zedboard, but then
again - no kernel module for the FPGA.

WX is built for embedded builds. In general, I suggest running grc on a
desktop and moving the flow graph over.

My problem right now is that the prebuilt file systems in
http://gnuradio.org/data/sdk/zedboard_armv7a-sf-vfp-neon/ don’t seem to have the
user_peripheral kernel module to communicate with the FPGA. Is it supposed to be
in there and I don’t know where to look? Am I supposed to cross-compile it on my
host machine?

The kernel module is custom work so you would need to add it to the
system yourself.

I tried to ‘make’ it inside Zynq, which didn’t work because it couldn’t find the
Kernel source headers (which as far as I’m aware should be located somewhere in
/usr/src/)

Let me take a look at adding a package to the default images that would
let you build kernel modules on the zynq. I think some people did some
work recently to make that work.

I also tried to bitbake the entire thing, which I haven’t really had success
with earlier, by including Jonathon P.'s meta-zynq-gnuradio layer
(GitHub - jpendlum/meta-zynq-gnuradio: OpenEmbedded layer to support GNU Radio's GSoC 2013 Zynq Project). My bblayers.conf looked
something like this:

I’m guessing Jonathon’s stuff is suffering from bitrot.

"
Fetching projects: 22% (2/9) Fetching project oe-core
fatal: Couldn’t find remote ref refs/head/master
fatal: Couldn’t find remote ref refs/head/master
error: Cannot fetch oe-core

error: Exited sync due to fetch errors

Interesting. What repo init command did you use? I’d like to sort this
out.

Philip

On 02/18/2015 12:50 PM, Sarunas Kalade wrote:

Hey Philip,

Thanks for the reply. I’m fairly sure I was using the same repo init command as
shown in the wiki:
repo init -u git://github.com/jpendlum/zynq-gnuradio-manifest.git
repo sync

Use this. I keep this up to date. The dizzy branch is the best place to
start now.

I need to ask Jonathon to put a warning about being old on his wiki page
:slight_smile:

Philip

I tried doing this and got a fetch error again. (tried for stable,
master, dizzy and daisy got the exact same result)
$ repo init -u git://github.com/balister/oe-gnuradio-manifest.git -b
dizzy
$ repo sync

Fetching project meta-ettus
error: Cannot fetch meta-ettus
error: Exited sync due to fetch errors

However, just setting my bblayers.conf to (using all Daisy branches btw)
BBLAYERS ?= "
/home/sarunas/oe-core/meta
/home/sarunas/layers/meta-xilinx
/home/sarunas/layers/meta-oe/meta-oe
/home/sarunas/layers/meta-oe/meta-networking
/home/sarunas/layers/meta-oe/meta-filesystems
/home/sarunas/layers/meta-sdr
"
And using the local.conf options as per you example (
https://github.com/balister/meta-sdr/blob/master/conf/local.conf.sample
) does seem to work for me and I can bitbake a gnuradio-dev-image. I
just can’t include the meta-gnuradio-zynq layer, because I don’t really
know which branches to use for all this.

Also tried doing the zynq-gnuradio-manifest again
$ repo init -u git://github.com/jpendlum/zynq-gnuradio-manifest.git
$ repo sync

Fetching project meta-xilinx
Fetching projects:  11% (1/9)  Fetching project bitbake
error: Cannot fetch bitbake
error: Exited sync due to fetch errors

Which is kinda weird, because last time it failed at fetching oe-core.


From: Philip B. [email protected]
Sent: 18 February 2015 21:23
To: Sarunas Kalade; [email protected]
Subject: Re: [Discuss-gnuradio] GNU Radio on Zynq - trouble getting the
user_peripheral kernel module to work

On 02/18/2015 12:50 PM, Sarunas Kalade wrote:

Hey Philip,

Thanks for the reply. I’m fairly sure I was using the same repo init command as
shown in the wiki:
repo init -u git://github.com/jpendlum/zynq-gnuradio-manifest.git
repo sync

Use this. I keep this up to date. The dizzy branch is the best place to
start now.

I need to ask Jonathon to put a warning about being old on his wiki page
:slight_smile:

Philip

On 02/19/2015 08:58 AM, Sarunas Kalade wrote:

I tried doing this and got a fetch error again. (tried for stable, master, dizzy
and daisy got the exact same result)
$ repo init -u git://github.com/balister/oe-gnuradio-manifest.git -b dizzy
$ repo sync

Fetching project meta-ettus
error: Cannot fetch meta-ettus
error: Exited sync due to fetch errors

This is the problem you need to solve. Can you read the manifest file to
see what repo it is using atry to clone by hand and check the needed
version. Hopefully that makes the problem clearer.

Something like:

git clone git://github.com/EttusResearch/meta-ettus.git
cd meta-ettus/
git checkout 9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f

Philip

And using the local.conf options as per you example (
https://github.com/balister/meta-sdr/blob/master/conf/local.conf.sample ) does
seem to work for me and I can bitbake a gnuradio-dev-image. I just can’t include
the meta-gnuradio-zynq layer, because I don’t really know which branches to use
for all this.

meta-gnuradio-zynq is not maintained. I can’t help you with anything on
Jonathons wiki.

Philip

Could you clarify a bit what you meant by ‘check the needed version’?
I’ve cloned some of the reps and did the checkouts with the hashes, but
I always just end up in a ‘detached HEAD’ state.

e.g.
$ git checkout 5f96c9333ea3ebdf52dd10f1a2cbc1532ff97009
Note: checking out ‘5f96c9333ea3ebdf52dd10f1a2cbc1532ff97009’.

You are in ‘detached HEAD’ state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in
this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again.
Example:

git checkout -b new_branch_name

HEAD is now at 5f96c93… gr-baz : Bump revision.

Doing git branch just shows that I am at * (detached from 5f96c93).
Should I try hunting down each repo branch where the specific commit was
made and then edit the manifest.xml file?

I tried going into oe-repo/.repo/manifest.xml and editing the revision
values by changing them from hashes to actual branch names (i.e. master,
dizzy, 1.24, etc. etc.) and after doing that repo sync did work in
retrieving all of the repos. However, doing git branch on any of those
returned a (no branch), which may or may not be expected.

Sorry if some of this stuff seems obvious, I’m pretty dumb when it comes
to git.

Sarunas


From: Philip B. [email protected]
Sent: 19 February 2015 18:58
To: Sarunas Kalade; [email protected]
Subject: Re: [Discuss-gnuradio] GNU Radio on Zynq - trouble getting the
user_peripheral kernel module to work

On 02/19/2015 08:58 AM, Sarunas Kalade wrote:

I tried doing this and got a fetch error again. (tried for stable, master, dizzy
and daisy got the exact same result)
$ repo init -u git://github.com/balister/oe-gnuradio-manifest.git -b dizzy
$ repo sync

Fetching project meta-ettus
error: Cannot fetch meta-ettus
error: Exited sync due to fetch errors

This is the problem you need to solve. Can you read the manifest file to
see what repo it is using atry to clone by hand and check the needed
version. Hopefully that makes the problem clearer.

Something like:

git clone git://github.com/EttusResearch/meta-ettus.git
cd meta-ettus/
git checkout 9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f

Philip

And using the local.conf options as per you example (
https://github.com/balister/meta-sdr/blob/master/conf/local.conf.sample ) does
seem to work for me and I can bitbake a gnuradio-dev-image. I just can’t include
the meta-gnuradio-zynq layer, because I don’t really know which branches to use
for all this.

meta-gnuradio-zynq is not maintained. I can’t help you with anything on
Jonathons wiki.

Philip

On 02/20/2015 09:47 AM, Sarunas Kalade wrote:

If you want to create a new branch to retain commits you create, you may

Sorry if some of this stuff seems obvious, I’m pretty dumb when it comes to git.

It sounds like you can check out meta-ettus from the command line, but
repo is running into a problem. I’ve done builds in vm’s to try and
detect all my cached credentials and haven’t seen your issue. Can you
confirm you succesfully checked out meta-ettus?

Philip

$ git clone git://github.com/EttusResearch/meta-ettus.git
$ cd meta-ettus/
$ git checkout 9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f
Note: checking out ‘9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f’.

You are in ‘detached HEAD’ state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in
this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again.
Example:

git checkout -b new_branch_name

HEAD is now at 9f47e8c… Add script to build factory image for E310.

Doing git log brings up all the commits done up until the one I just
checked out, so I’m assuming it’s behaving properly. I can also git
checkout master or e300-daisy with no issues.

Also when I tried to bypass meta-ettus, by force syncing I’ve noticed
that it’s not just meta-ettus that repo can’t fetch - it’s all of them.

$ repo init -u git://github.com/balister/oe-gnuradio-manifest -b dizzy
$ repo sync -f
Fetching project meta-ettus
error: Cannot fetch meta-ettus
warn: --force-broken, continuing to sync
Fetching projects: 11% (1/9) Fetching project bitbake
error: Cannot fetch bitbake
warn: --force-broken, continuing to sync
Fetching projects: 22% (2/9) Fetching project meta-fsl-arm-extra
error: Cannot fetch meta-fsl-arm-extra
warn: --force-broken, continuing to sync
Fetching projects: 33% (3/9) Fetching project meta-sdr
error: Cannot fetch meta-sdr
warn: --force-broken, continuing to sync
Fetching projects: 44% (4/9) Fetching project meta-xilinx
error: Cannot fetch meta-xilinx
warn: --force-broken, continuing to sync
Fetching projects: 55% (5/9) Fetching project oe-core
error: Cannot fetch oe-core
warn: --force-broken, continuing to sync
Fetching projects: 66% (6/9) Fetching project meta-oe
error: Cannot fetch meta-oe
warn: --force-broken, continuing to sync
Fetching projects: 77% (7/9) Fetching project meta-ti
error: Cannot fetch meta-ti
warn: --force-broken, continuing to sync
Fetching projects: 88% (8/9) Fetching project meta-fsl-arm
Fetching projects: 100% (9/9), done.
fatal: failed to unpack tree object HEAD
Traceback (most recent call last):
File “/home/sarunas/oe-repo/.repo/repo/main.py”, line 506, in
_Main(sys.argv[1:])
File “/home/sarunas/oe-repo/.repo/repo/main.py”, line 482, in _Main
result = repo._Run(argv) or 0
File “/home/sarunas/oe-repo/.repo/repo/main.py”, line 161, in _Run
result = cmd.Execute(copts, cargs)
File “/home/sarunas/oe-repo/.repo/repo/subcmds/sync.py”, line 681, in
Execute
project.Sync_LocalHalf(syncbuf)
File “/home/sarunas/oe-repo/.repo/repo/project.py”, line 1196, in
Sync_LocalHalf
self._InitWorkTree()
File “/home/sarunas/oe-repo/.repo/repo/project.py”, line 2296, in
_InitWorkTree
raise GitError(“cannot initialize work tree”)
error.GitError: cannot initialize work tree

Sarunas


From: Philip B. [email protected]
Sent: 20 February 2015 18:23
To: Sarunas Kalade; [email protected]
Subject: Re: [Discuss-gnuradio] GNU Radio on Zynq - trouble getting the
user_peripheral kernel module to work

On 02/20/2015 09:47 AM, Sarunas Kalade wrote:

If you want to create a new branch to retain commits you create, you may

Sorry if some of this stuff seems obvious, I’m pretty dumb when it comes to git.

It sounds like you can check out meta-ettus from the command line, but
repo is running into a problem. I’ve done builds in vm’s to try and
detect all my cached credentials and haven’t seen your issue. Can you
confirm you succesfully checked out meta-ettus?

Philip

On 02/20/2015 10:52 AM, Sarunas Kalade wrote:

$ git clone git://github.com/EttusResearch/meta-ettus.git
$ cd meta-ettus/
$ git checkout 9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f
Note: checking out ‘9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f’.

Thanks. I will now sit in the corner and go insane :slight_smile:

I’m going to try making another clean vm and testing. My current
thinking is maybe there has been an update to repo that changed
something.

In the short term, you should be able to checkout the layers called for
in the manifest and go from there.

Thanks,

Philip

Sorry for potentially being a source of temporal madness : / Let me know
if I can provide any more info that could be useful.

Just FYI about recreating the issue: I tried it on a desktop Ubuntu
14.04, a fresh Ubuntu 14.04 VM, a Debian VM and just now on a colleagues
Ubuntu 12.04 VM.

Worst case I’ve still got the prebuilt filesystem, which works fine.
Just need to do some more reading on the FPGA side of things.

Thanks for taking the time to help out!

Sarunas


From: Philip B. [email protected]
Sent: 20 February 2015 19:11
To: Sarunas Kalade; [email protected]
Subject: Re: [Discuss-gnuradio] GNU Radio on Zynq - trouble getting the
user_peripheral kernel module to work

On 02/20/2015 10:52 AM, Sarunas Kalade wrote:

$ git clone git://github.com/EttusResearch/meta-ettus.git
$ cd meta-ettus/
$ git checkout 9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f
Note: checking out ‘9f47e8c6d4a91a06bd6c907f2d27ba40deaa0a2f’.

Thanks. I will now sit in the corner and go insane :slight_smile:

I’m going to try making another clean vm and testing. My current
thinking is maybe there has been an update to repo that changed
something.

In the short term, you should be able to checkout the layers called for
in the manifest and go from there.

Thanks,

Philip

On 02/20/2015 12:00 PM, Sarunas Kalade wrote:

Sorry for potentially being a source of temporal madness : / Let me know if I
can provide any more info that could be useful.

Just FYI about recreating the issue: I tried it on a desktop Ubuntu 14.04, a
fresh Ubuntu 14.04 VM, a Debian VM and just now on a colleagues Ubuntu 12.04 VM.

I’m a Fedora guy. I wonder if the issue is there.

Philip

On 02/20/2015 12:00 PM, Sarunas Kalade wrote:

Sorry for potentially being a source of temporal madness : / Let me know if I
can provide any more info that could be useful.

Just FYI about recreating the issue: I tried it on a desktop Ubuntu 14.04, a
fresh Ubuntu 14.04 VM, a Debian VM and just now on a colleagues Ubuntu 12.04 VM.

Worst case I’ve still got the prebuilt filesystem, which works fine. Just need
to do some more reading on the FPGA side of things.

Thanks for taking the time to help out!

OK, we got to the bottom of this. Recent versions of repo barfed on the
manifest. I’ve updated the manifest and things work now. Sorry for the
problems.

Philip

Awesome. The manifest works perfectly for me now.

Thank you : )

Sarunas


From: Philip B. [email protected]
Sent: 24 February 2015 20:31
To: Sarunas Kalade; [email protected]
Subject: Re: [Discuss-gnuradio] GNU Radio on Zynq - trouble getting the
user_peripheral kernel module to work

On 02/20/2015 12:00 PM, Sarunas Kalade wrote:

Sorry for potentially being a source of temporal madness : / Let me know if I
can provide any more info that could be useful.

Just FYI about recreating the issue: I tried it on a desktop Ubuntu 14.04, a
fresh Ubuntu 14.04 VM, a Debian VM and just now on a colleagues Ubuntu 12.04 VM.

Worst case I’ve still got the prebuilt filesystem, which works fine. Just need
to do some more reading on the FPGA side of things.

Thanks for taking the time to help out!

OK, we got to the bottom of this. Recent versions of repo barfed on the
manifest. I’ve updated the manifest and things work now. Sorry for the
problems.

Philip