====== langage et environnement ======
* pour l'instant je choisit le langage C parce que un peux plus structuré que le shell , néanmoins dans mon design j'essayerai de maximisé les choses configurable par shell script.
* on compile sous linux voir le tuto : (http://www.gargoyle-router.com/wiki/doku.php?id=openwrt_coding)
* j'ai regénérer le SDK parceque je n'ai d'archi 64bits ...
* pour compiler sous linux dans un environnement Windows je fait tourner un [[maison2:configuration_open_wrt:Xubuntu_sous_virtualbox]] ...
donc on retrouve les package sous fred@Xubuntu:~/openwrt/OpenWrt-SDK-brcm-2.4-for-Linux-i686/package :
* helloworld
* openhouse
pour compiler on fait sous ~/openwrt/OpenWrt-SDK-brcm-2.4-for-Linux-i686/make V=99 à V=1
in case of ERROR: please fix package/click/Makefile
To get a more descriptive error message, enter the following from the root directory of your OpenWRT source distribution:
TOPDIR=$PWD make -C package/pkg_name DUMP=1
ipkg install -force-overwrite openhouse_1_mipsel.ipk
openhouse: can't load library 'libstdc++.so.6' -> installer la libstdcpp ...
{{:maison2:configuration_open_wrt:script_install_wl500gp.zip|}} on les met dans /usr/bin pour le garder en flash
====== création du SDK ======
sdk du trunk : svn checkout svn://svn.openwrt.org/openwrt/trunk backfire
sdk 10.03.1 : svn checkout svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1
make menuconfig
make -j 4 //
* http://wiki.openwrt.org/doc/howto/obtain.firmware.sdk
====== debugage du SDK ar71 ======
fred@Xubuntu 7.10 Gutsy Gibbon:
* refuse de [[http://wiki.openwrt.org/doc/howto/obtain.firmware.sdk| compiler le package motion ]]: configure: error: C compiler cannot create executables
* https://forum.openwrt.org/viewtopic.php?id=34378 -> le sdk n'est pas relocable voir paragraphe suivant
* https://forum.openwrt.org/viewtopic.php?id=30341 : I know this error, it happens with incompletely installed GCC versions.
* sous la racine du sdk : make menuconfig
* scripts/config/mconf: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.7' not found (required by scripts/config/mconf)
strings /lib/libc.so.6 | grep GLIBC : GLIBC_2.0 .. GLIBC_2.6 -> il faudrait passer a une autre distri linux
* make menuconfig qui bloque : clean (pas d'effet), test avec sdk relocable (même problème)
test du sdk avec un package sans dépendance
svn export svn://svn.openwrt.org/openwrt/trunk/package/ncurses package/ncurses
===== le SDK de la 10.03.1 est moisi =====
dernière modification du tag 10.03.1 r29638
https://dev.openwrt.org/search?changeset=on&q=reloc&page=2&noquickjump=1
r29924 r29925 r29926,r29932,r29933,r29938,r29950,r29961
https://dev.openwrt.org/changeset/29948 => écrase la modif du patch-specs.sh r29925
==== conclusion ====
from https://forum.openwrt.org/viewtopic.php?id=35152 :
hello
currently the SDK for backfire 10.30.1 get a problem of relocation (https://forum.openwrt.org/viewforum.php?id=17&p=1)
applying only https://dev.openwrt.org/ticket/10822 do not solve the problem
so here a list of change set to download and merge:
changeset_r29820.zip
changeset_r29821.zip
changeset_r29826.zip
changeset_r29827.zip
changeset_r29828.zip
changeset_r29829.zip
changeset_r29830.zip
changeset_r29831.zip
changeset_r29834.zip
changeset_r29924.zip
changeset_r29925.zip
changeset_r29926.zip
changeset_r29932.zip
changeset_r29933.zip
changeset_r29938.zip
changeset_r29950.zip
changeset_r29961.zip, i am pretty sure that there is too much .zip but it works.
so you unzip all from the oldest to the latest .
this will give you 2 folders trunk and branches , you shall merge the 2 folders with the latest files...
so in order to help you i made {{:maison2:configuration_open_wrt:patch_10.03.1_sdk_reloc.zip|}}
here is the procedure to create your SDK for 10.03.1 tag :
mkdir my_sdk_builder
cd my_sdk_builder
svn export svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1
unzip patch_10.03.1_SDK_reloc.zip (force overwrite)
chmod 755 ./script/ext-toolchain.sh
chmod 755 ./script/patch-specs.sh
make menuconfig (Choose your Target System and platfrom and then [x] Build the OpenWrt SDK) -> save your config
make -j 4 //wait 1 hour on a 3 core@3,3Ghz.
cp ./bin/target system/your_sdk.zip /home/fred
cd ..
rm my_sdk_builder
unzip your_sdk.zip
cd your_sdk
svn export svn://svn.openwrt.org/openwrt/trunk/package/ncurses package/ncurses
make V=1
====== alternative au SDK forum openwrt mais je dois refaire un SDK like ...: ======
svn checkout svn://svn.openwrt.org/openwrt/trunk backfire
./scripts/feeds update
make defconfig
make package/symlinks
make menuconfig
make menuconfig -> check nano and libncurses
make tools/install
make toolchain/install
make target/compile
make package/ncurses/compile
make package/ncurses/install
make package/feeds/packages/nano/compile
make package/feeds/packages/nano/install
make package/index
====== compiling on OpenWRT router natively ======
* http://www2.wpkg.org/openwrt/devel-tools contains packages like binutils, diffutils, file, gcc, make, and uClibc-devel - everything (hopefully) needed to compile on a router
* http://openedwrt.root24.be
* http://scratchbox.org/wiki/CrossToolToolchain
====== dépendance de openhouse ======
* [[maison2:configuration_open_wrt:owfs]]
* [[maison2:configuration_open_wrt:ws2355|fetch2300 minmax2300]]
====== misc ======
===== structure de donnée capteurs =====
__ temp :__
* temp real,INT100,str
* boolean present, last present date , counter of error
*
__humid__ :
* temp,Vn,,,, :: real,INT100,str
* boolean present, last present date , counter of error
__inout(2405,2408)__ :
* in/out carrier
* state carrier
* OFF/ON/AUTO carrier
__WS2355__ :
*
_teleinfo_ :
====== temps execution =======
N 1 : exe 1=6 us 2=909 us 3=168 us 4=85 us 5=54 us 6=2 us 7=1 us 8=60 us 9=28 us 10=229 us
N 2 : exe 1=5 us 2=585 us 3=76 us 4=7 us 5=24 us 6=2 us 7=1 us 8=43 us 9=39 us 10=47 us
N 3 : exe 1=4 us 2=581 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=48 us 10=49 us
N 4 : exe 1=5 us 2=585 us 3=76 us 4=6 us 5=25 us 6=2 us 7=1 us 8=43 us 9=59 us 10=49 us
N 5 : exe 1=5 us 2=582 us 3=75 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=69 us 10=48 us
N 6 : exe 1=5 us 2=582 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=80 us 10=48 us
N 7 : exe 1=5 us 2=580 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=90 us 10=49 us
N 8 : exe 1=5 us 2=583 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=101 us 10=49 us
N 9 : exe 1=5 us 2=582 us 3=76 us 4=6 us 5=25 us 6=1 us 7=1 us 8=43 us 9=112 us 10=49 us
N 10 : exe 1=5 us 2=583 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=122 us 10=48 us
N 11 : exe 1=5 us 2=586 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=133 us 10=48 us
N 12 : exe 1=5 us 2=581 us 3=77 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=144 us 10=48 us
N 13 : exe 1=5 us 2=583 us 3=76 us 4=6 us 5=25 us 6=2 us 7=1 us 8=43 us 9=155 us 10=49 us
N 14 : exe 1=5 us 2=581 us 3=76 us 4=6 us 5=24 us 6=2 us 7=1 us 8=44 us 9=164 us 10=49 us
N 15 : exe 1=5 us 2=583 us 3=75 us 4=7 us 5=24 us 6=2 us 7=1 us 8=43 us 9=176 us 10=48 us
N 16 : exe 1=5 us 2=582 us 3=76 us 4=7 us 5=24 us 6=2 us 7=1 us 8=43 us 9=186 us 10=49 us
N 17 : exe 1=5 us 2=582 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=196 us 10=49 us
N 18 : exe 1=5 us 2=582 us 3=76 us 4=6 us 5=24 us 6=2 us 7=1 us 8=44 us 9=207 us 10=49 us
N 19 : exe 1=5 us 2=584 us 3=76 us 4=6 us 5=25 us 6=1 us 7=2 us 8=43 us 9=217 us 10=48 us
N 20 : exe 1=5 us 2=582 us 3=76 us 4=6 us 5=24 us 6=2 us 7=1 us 8=43 us 9=228 us 10=49 us
/* TO */ gettimeofday(&tv0, NULL);
gettimeofday(&tv, NULL);
curtime=tv.tv_sec; //6..5us
/* T1 */gettimeofday(&tv1, NULL);
strftime(buffer,30,"%m-%d-%Y %T.",localtime(&curtime)); //910..580us
/* T2 */gettimeofday(&tv2, NULL);
my_log_file = fopen("/tmp/log_fred.txt", "a"); //168..175us
/* T3 */gettimeofday(&tv3, NULL);
my_log_file_posix_handle = fileno(my_log_file); //85..6us
/* T4 */gettimeofday(&tv4, NULL);
stat("/tmp/log_fred.txt" ,&statbuf); //54..24
/* T5 */gettimeofday(&tv5, NULL);
filesize = (long)statbuf.st_size; //2..1us
/* T6 */gettimeofday(&tv6, NULL);
if (filesize > 15000) //2..1us
{ //purge file content
ftruncate(my_log_file_posix_handle, 0);
printf(" overfilesize!! "); } //90us
/* T7 */gettimeofday(&tv7, NULL);
fprintf(my_log_file,"\r\n%s%ld : ",buffer,tv.tv_usec); //60..43us
/* T8 */gettimeofday(&tv8, NULL);
for (lub_count = 0 ; lub_count < length ; lub_count++) fprintf(my_log_file,"%2X ",string[lub_count]); //28(2)..228(20)us
/* T9 */gettimeofday(&tv9, NULL);
if (fclose(my_log_file)) {perror("Failed closing log file");errno=0;} //229..48us
/* T10 */gettimeofday(&tv10, NULL);
===== test sur les timer (100ms) : WL500GP =====
openhouse is on the place ... step 3.0
N 1 :09-28-2010 17:15:11.735055 exe = 1037 us
N 2 :09-28-2010 17:15:11.834767 exe = 632 us
N 3 :09-28-2010 17:15:11.934754 exe = 617 us
N 4 :09-28-2010 17:15:12.34753 exe = 619 us
N 5 :09-28-2010 17:15:12.134750 exe = 615 us
N 6 :09-28-2010 17:15:12.234761 exe = 632 us
N 7 :09-28-2010 17:15:12.334749 exe = 616 us
N 8 :09-28-2010 17:15:12.434749 exe = 620 us
N 9 :09-28-2010 17:15:12.534745 exe = 619 us
N 10 :09-28-2010 17:15:12.634744 exe = 618 us
N 11 :09-28-2010 17:15:12.734741 exe = 618 us
N 12 :09-28-2010 17:15:12.834738 exe = 618 us
N 13 :09-28-2010 17:15:12.934738 exe = 621 us
N 14 :09-28-2010 17:15:13.34737 exe = 624 us
N 15 :09-28-2010 17:15:13.134731 exe = 614 us
N 16 :09-28-2010 17:15:13.234732 exe = 617 us
N 17 :09-28-2010 17:15:13.334728 exe = 619 us
N 18 :09-28-2010 17:15:13.434727 exe = 620 us
N 19 :09-28-2010 17:15:13.534728 exe = 620 us
N 20 :09-28-2010 17:15:13.634722 exe = 618 us
===== test sur les timer (100ms) le meme code mais sous xubuntu =====
N 1 :09-28-2010 16:44:36.150036 exe = 931 us
N 2 :09-28-2010 16:44:36.257081 exe = 61 us
N 3 :09-28-2010 16:44:36.357227 exe = 93 us
N 4 :09-28-2010 16:44:36.460045 exe = 114 us
N 5 :09-28-2010 16:44:36.569603 exe = 67 us
N 6 :09-28-2010 16:44:36.670014 exe = 106 us
N 7 :09-28-2010 16:44:36.770382 exe = 83 us
N 8 :09-28-2010 16:44:36.879419 exe = 37 us
N 9 :09-28-2010 16:44:36.982708 exe = 1068 us
N 10 :09-28-2010 16:44:37.84433 exe = 44 us
N 11 :09-28-2010 16:44:37.185471 exe = 138 us
N 12 :09-28-2010 16:44:37.285987 exe = 143 us
N 13 :09-28-2010 16:44:37.385527 exe = 29 us
N 14 :09-28-2010 16:44:37.486368 exe = 69 us
N 15 :09-28-2010 16:44:37.588239 exe = 37 us
N 16 :09-28-2010 16:44:37.692254 exe = 166 us
N 17 :09-28-2010 16:44:37.791047 exe = 64 us
N 18 :09-28-2010 16:44:37.891477 exe = 89 us
N 19 :09-28-2010 16:44:38.5380 exe = 54 us
N 20 :09-28-2010 16:44:38.115766 exe = 50
===== test sur les timer (100ms) exe =====
gettimeofday(&tv0, NULL);
gettimeofday(&tv, NULL);
curtime=tv.tv_sec;
strftime(buffer,30,"%m-%d-%Y %T.",localtime(&curtime));
printf("%s%ld",buffer,tv.tv_usec);
gettimeofday(&tv1, NULL);
diff_exe = tv1.tv_usec - tv0.tv_usec;
printf(" exe = %ld us",diff_exe);