Files
PBSwissMX/usrServo/Readme.md

4.2 KiB

scp -r root@SAROP11-CPPM-MOT6871:/opt/ppmac . scp -r root@SAROP11-CPPM-MOT6871:/usr/local/xenomai/lib xenomai scp -r root@SAROP11-CPPM-MOT6871:/usr/lib .

LIB='-L ppmac/libppmac/ -Lxenomai -lppmac -lxenomai -lpthread_rt -lpthread -lrt -ldl' LIB='-L/opt/eldk-4.2/PPMAC_rootfs-7-wheezy/opt/ppmac/libppmac -lppmac -L/opt/eldk-4.2/PPMAC_rootfs-7-wheezy/usr/local/xenomai-2.6.2.1/lib -lxenomai -lpthread_rt -lpthread -lrt -ldl'

/opt/eldk-4.2/usr/bin/ppc_4xxFP-gcc -g main.o $LIB -o main

export LD_LIBRARY_PATH=/opt/ppmac/libppmac/

Motor[4].Ctrl=Sys.ServoCtrl Motor[4].Ctrl=UserAlgo.ServoCtrlAddr[0]

UserAlgo.ServoCtrlAddr[0]=$....

Motor[4].IpbGain=2.9192927

UserAlgo.ServoCtrlAddr[4]=$a1108068

usrflash/Project/Bin/Debug/usralgo.so usrflash/Project/Bin/Debug/usralgo.ko

Helpfull Deltatau lines

cat /opt/ppmac/projpp/projpp_help.txt root@:/# projpp -l

$$$*** !common() !mx-stage() #4$ #4j/ #4k

Start IDE New Project, PowerBrick_LV makefile and output at: C:\Documents and Settings\user\Desktop\scratch\PowerBrick_LVUserServoLoop\PowerBrick_LVUserServoLoop\C Language\Realtime Routines

Update Firmware

we are using: 2.0.2.14, IDE wants newer, probably 2.1.1.3 (http://forums.deltatau.com/filedepot/) With IDE the new firmware can be installed (tools->...->download firmware)

User Servo Loop

build usralgo.ko (or copy from IDE after build)

rmmod usralgo

insmod /mypath/usralgo.ko (e.g. insmod /opt/ppmac/usrflash/Project/Bin/Debug/usralgo.ko)

cat /proc/kallsyms | grep MyUserAlgoFunctionName (e.g. cat /proc/kallsyms | grep user_pid_ctrl) a47e448b r __kstrtab_user_pid_ctrl [usralgo] a47e4458 r __ksymtab_user_pid_ctrl [usralgo] a47e4068 T user_pid_ctrl [usralgo]

UserAlgo.ServoCtrlAddr[4] = $a47e4068 Motor[4].Ctrl =UserAlgo.ServoCtrlAddr[4].a

build usralgo.ko

The sources are from C:\Documents and Settings\user\Desktop\scratch\PowerBrick_LVUserServoLoop\PowerBrick_LVUserServoLoop\C Language\Realtime Routines The Makefile was build with informations from the .../Realtime Routines/.usralgo.o.cmd etc. files

rootfs files are on the powerbrick or in C:\DeltaTau\Power PMAC IDE\compilers\opt -> powerpc-465-rootfs.tar.gz On the powerbrick the kernel sources are not installed -> therefore the rootfs from the IDE is needed

Make usralgo.ko

Sample Kernel Module

http://www.thegeekstuff.com/2013/07/write-linux-kernel-module/ https://linux.die.net/lkmpg/x121.html

Do a module on Ubuntu works. -> path usrServo/sampleKernelModul ln -sfT Makefile.Ubuntu Makefile make clean make dmesg insmod /home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/usrServo/sampleKernelModule/hello.ko rmmod hello.ko dmesg

Try to do a module for PowerBrick: uncompress powerpc-465-rootfs.tar.gz (from PMAC IDE) to /opt -> /opt/powerpc-465-rootfs/usr/include/ etc. compile fixdep, modpost cd /opt/powerpc-465-rootfs/usr/src/linux-3.2.21-serengeti-smp/scripts/basic gcc fixdep.c -o fixdep cd /opt/powerpc-465-rootfs/usr/src/linux-3.2.21-serengeti-smp/scripts/mod gcc modpost.c file2alias.c sumversion.c -o modpost ln -sfT Makefile.Deltatau Makefile make clean make scp hello.ko root@SAROP11-CPPM-MOT6871:/tmp

Build test the Servo kernel module

cd /home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/usrServo make clean make scp usralgo.ko root@SAROP11-CPPM-MOT6871:/tmp

build usralgo.ko (or copy from IDE after build)

******** UP TO HERE IT WORKED ***********

insmod /opt/ppmac/usrflash/Project/Bin/Debug/usralgo.ko insmod /tmp/usralgo.ko

286 dmesg 287 rmmod hello.ko 288 dmesg 289 cat /proc/kallsyms | grep user_pid_ctrl 290 rmmod usralgo 291 cat /proc/kallsyms | grep user_pid_ctrl 292 insmod /opt/ppmac/usrflash/Project/Bin/Debug/usralgo.ko 293 cat /proc/kallsyms | grep user_pid_ctrl 294 rmmod usralgo 295 insmod /tmp/usralgo.ko 296 cat /proc/kallsyms | grep user_pid_ctrl 297 history

THIS ALSO WORKED !!!

rmmod usralgo insmod /mypath/usralgo.ko (e.g. insmod /opt/ppmac/usrflash/Project/Bin/Debug/usralgo.ko) cat /proc/kallsyms | grep MyUserAlgoFunctionName (e.g. cat /proc/kallsyms | grep user_pid_ctrl)