Forum


17:53:50

2015 年 02 月 11 日

Hi,
I use linux on all 86duino boards and I am facing an issue and I have no answer/solution for this.
Summary
When I write a simple program using 86duino sdk under linux and upload to the 86duino, the program can run and do tasks, but the system load jumps to 1.0 and more.
Checking the tasks list (htop), I can see two processes running as the application and both of them are 99-100% load.
I guess, when the 86duino board working only as a 86duino/arduino board (not using linux and 86duino sdk on it but the 86duino and its native code) it is ok, all resources for the only program runs on it, but in linux this situation is not good.
The problem
Due to that, I want to use linux and other programs on it in parallel by the 86duino program (like as simple as read some digital/analog values, nothing special really), the response of the system getting very bad, even logging in via ssh takes long time etc,
It is not really a good situation when all cpu resources goes to the 86duino code, even it has delay/or sleep with 1 sec to read/write digital io in every seconds, the high load still exists, both processes takes 100% of cpu.
The question
Is there any way to solve this issue or this is by design?
Thanks,
István
00:11:32

2015 年 02 月 11 日

Hi,
I found the reason of the high load of the executable.
It is by design and not a bug.
The situation is that, handling external interrupts needs a 2nd thread which continuously running and check installed interrupts to invoke if necessary.
WInterrupts.h contains the thread: void *intrMain(void*pargs) function, which will run and call callbacks if necessary.
It seems when the user do not need external interrupts, it safe to disable interrupt_init in 86Duino_Init.cpp and recompile the whole library with make.
Only modification necessary to achieve it:
File: 86Duino_Linux_SDK/cores/86Duino_Init.cpp
Line 6 should be commented out (diff like syntax):
- interrupt_init();
+ // interrupt_init();
Any hint about sideffect from developers?
Thanks,
István
17:27:08

2014 年 04 月 01 日

Hi, pongraczi,
Thank your response and we improve for the issue, you can get the latest version on 86Duino GitHub : https://github.com/roboard/86Duino_Linux_SDK
Update it for your 86Duino Linux SDK
Thanks.
06:35:07

2015 年 02 月 11 日

Thanks, I checked it with a program I tried to port to the SDK.
Somehow, I got 2 threads, like this snippet from pstree -p:
-bash(819)---mc(1457)---bash(1459)---rcswitch(1641)---{rcswitch}(1642)
One process is running at 93-95%, the other one is almost zero.
My question, how can I get external interrupt work on linux/sdk, because it seems I failed to port rc-switch into the SDK with linux.
It only uses external interrupts and main goal is to be able to receive RF433.92 signals (rcswitch).
I have working arduino nano and uno configs and 86duino one/zero in arduino mode (no linux, but 86duino IDE).
Do you have any idea, what to test/check to get external interrupts work on 86duino one?
Thanks,
István
Most Users Ever Online: 229
Currently Online:
3 Guest(s)
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Dinosaur: 27
leutenecker: 13
mrZagg: 10
hippy: 9
UIdahoCIT: 8
smeezekitty: 8
Ekkehard: 8
lukeross: 8
tomka: 8
blaxxun: 7
Member Stats:
Guest Posters: 11
Members: 1488
Moderators: 14
Admins: 5
Forum Stats:
Groups: 2
Forums: 11
Topics: 248
Posts: 1114
Newest Members: fungus, MixThors, Shcookius, modtra, alan1974, Sergeyfup, mitunsclusa, Dennissot, bb4000, Ovendaanalolymn
Moderators: Glaux: 70, uaa: 11, guigra: 17, Android_Lin: 228, bcarroll: 12, cucubutter: 84, recycled-air: 12, stevemork: 16, zerozaber: 52, pongraczi: 26, jejump: 14, George Andrews III: 56, poto: 11, garpastym: 20
Administrators: eveshih: 1, anthony: 31, viky6: 0, roboard: 135, hcl: 1