code:work:pi:rtpreempt:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
code:work:pi:rtpreempt:start [2017/03/05 01:56] – [Xenomai] david | code:work:pi:rtpreempt:start [2017/03/09 01:06] (current) – [Xenomai Pi 3 Compile HOWTO] david | ||
---|---|---|---|
Line 301: | Line 301: | ||
< | < | ||
cd ~/work/pi | cd ~/work/pi | ||
- | tar xf download/ | + | tar xf download/ |
- | mv linux-3.18.20 linux-3.18.20-ipipe | + | mv linux-4.4.43 linux-4.4.43-ipipe |
cd xenomai-3.0.3 | cd xenomai-3.0.3 | ||
- | scripts/ | + | scripts/ |
- | cd ~/ | + | cd ~/ |
- | KERNEL=kernel7 | + | export |
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig | ||
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2835_defconfig | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2835_defconfig | ||
- | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs | + | # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs |
# no modules!? | # no modules!? | ||
+ | |||
+ | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig | ||
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs -j `getconf _NPROCESSORS_ONLN` | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs -j `getconf _NPROCESSORS_ONLN` | ||
+ | |||
+ | cd /mnt | ||
+ | sudo mkdir pisdcard | ||
+ | sudo mkdir pisdcard/ | ||
+ | sudo mkdir pisdcard/ | ||
+ | sudo mount /dev/sdb1 / | ||
+ | sudo mount /dev/sdb2 / | ||
+ | |||
+ | # go where the kernel is that you want to install | ||
+ | cd ~/ | ||
+ | sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/ | ||
+ | |||
+ | # and the rest | ||
+ | sudo cp / | ||
+ | sudo scripts/ | ||
+ | sudo cp arch/ | ||
+ | sudo cp arch/ | ||
+ | sudo cp arch/ | ||
</ | </ | ||
Line 330: | Line 350: | ||
* This is an excellent example that has a real time thread and a non-real time thread that communicate. | * This is an excellent example that has a real time thread and a non-real time thread that communicate. | ||
+ | |||
+ | ===== Xenomai Pi 3 Compile HOWTO ===== | ||
+ | |||
+ | Using this as the basis: | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | - Grab Xenomai < | ||
+ | cd ~/ | ||
+ | wget << | ||
+ | </ | ||
+ | - What patches do we have? < | ||
+ | cd ~/work/pi/ | ||
+ | tar xf download/ | ||
+ | ls xenomai-3.0.3/ | ||
+ | # | ||
+ | # results | ||
+ | ipipe-core-3.10.32-arm-13.patch | ||
+ | ipipe-core-3.14.44-arm-16.patch | ||
+ | </ | ||
+ | - Grab the source code from the **git** repository < | ||
+ | git clone https:// | ||
+ | cd linux | ||
+ | git checkout rpi-4.4.y | ||
+ | </ | ||
+ | - Create a new Xenomai branch < | ||
+ | git checkout -b xenomai-3.0.3 | ||
+ | </ | ||
+ | - Dry run the patch < | ||
+ | patch --dry-run -p1 < | ||
+ | </ | ||
+ | - Patch the kennel assuming you saw no FAILS in the dry run test < | ||
+ | cd .. | ||
+ | xenomai-3.0.3/ | ||
+ | </ | ||
+ | - Build the default configuration < | ||
+ | KERNEL=kernel7 | ||
+ | cd linux | ||
+ | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig | ||
+ | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2835_defconfig | ||
+ | </ | ||
+ | - Configure the kernel < | ||
+ | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig | ||
+ | </ | ||
+ | - Make these changes | ||
+ | - Kernel Features | ||
+ | - Preemptible Kernel (Low-Latency Desktop) | ||
+ | - DISBLE Allow for memory compaction | ||
+ | - DISABLE Contiguous Memory Allocator | ||
+ | - CPU Power Management | ||
+ | - Kernel hacking | ||
+ | - DISABLE KGDB: kernel debugger | ||
+ | - Compile! < | ||
+ | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j 6 | ||
+ | </ | ||
+ | - Ran this with the 3.1.18 kernel... seems like that might work. |
code/work/pi/rtpreempt/start.1488678973.txt.gz · Last modified: 2017/03/05 01:56 by david