I'm running a BBB Wireless. The OS version, version.sh output, etc. are
below.
We're sensor outputs on AIN4 and AIN0 with C using the code below. The
intervals between readings is fairly constant at about 350 uS but there is
periodically, about every 25 readings, a reading interval of between 4000
and 4800 uS. Our application can't accept this.
1) Is there some process the OS is doing periodically to cause this delay
and can we eliminate it?
2) Would the PRUs solve this problem and is it worth the effort to learn
and apply them?
Thanks for your insights, advice, and help!
Code is in C...and we run it from the Cloud9 IDE.
void ReadDetectors(long TimeToRead, int CycleNo)
{
// initialize local variables
char Det1Volts_str[1024][6];
char Det2Volts_str[1024][6];
long elapsed_us;
int index;
index = 0;
struct timeval tv_start; //start time hack
struct timeval tv_now; // current time hack
long total_elapsed_time_us[1024];
long start_secs;
long last_secs;
long last_usecs;
int KeepReading = 1;
FILE* fDet1 = fopen("/sys/bus/iio/devices/iio:device0/in_voltage4_raw",
"r"); // top sensor, blue wire
FILE* fDet2 = fopen("/sys/bus/iio/devices/iio:device0/in_voltage0_raw",
"r"); // bottom sensor, purple wire
// get time at entry into the routine
gettimeofday(&tv_now,NULL);
start_secs = tv_now.tv_sec;
last_usecs = tv_now.tv_usec;
elapsed_us = 0;
total_elapsed_time_us[index] = 0;
while (KeepReading)
{
// update elapsed time
gettimeofday(&tv_now,NULL);
if (tv_now.tv_sec >= last_usecs)
{
elapsed_us = tv_now.tv_usec - last_usecs;
}
else
{
elapsed_us = (1000000 - last_usecs) + tv_now.tv_usec;
}
total_elapsed_time_us[index] = (tv_now.tv_sec -
start_secs)*1000000 + elapsed_us;
if (total_elapsed_time_us[index] > TimeToRead) KeepReading = 0;//
read detectors
fread(&Det1Volts_str[index], 5, 1, fDet1);
fread(&Det2Volts_str[index], 5, 1, fDet2);
rewind(fDet1);
rewind(fDet2);
index += 1;
if (index >1024) KeepReading = 0;
}
}
debian@beaglebone:/var/lib/cloud9$ uname --a
Linux beaglebone 4.19.94-ti-r42 #1buster SMP PREEMPT Tue Mar 31 19:38:29
UTC 2020 armv7l GNU/Linux
debian@beaglebone:/$ sudo opt/scripts/tools/version.sh
git:/opt/scripts/:[b39ec679648a6be8f25f48bd1c9784c1fc5a0c46]
eeprom:[A335BNLTBWA52027BBWG0227]
model:[TI_AM335x_BeagleBone_Black_Wireless]
dogtag:[BeagleBoard.org Debian Buster IoT Image 2020-04-06]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot
2019.04-00002-g07d5700e21]:[location: dd MBR]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot
2018.03-00002-gac9cce7c6a]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot-univ.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0]
UBOOT: Loaded Overlay:[BB-ADC-00A0]
UBOOT: Loaded Overlay:[BB-BBBW-WL1835-00A0]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0]
UBOOT: Loaded Overlay:[BB-HDMI-TDA998x-00A0]
UBOOT: Loaded Overlay:[BB-I2C2-RTC-DS3231]
UBOOT: Loaded Overlay:[BB-W1-P9.12-00A2]
kernel:[4.19.94-ti-r42]
nodejs:[v10.15.2]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr4=/lib/firmware/BB-W1-P9.12-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-19-TI-00A0.dtbo]
uboot_overlay_options:[enable_uboot_cape_universal=1]
uboot_overlay_options:[dtb_overlay=/lib/firmware/BB-I2C2-RTC-DS3231.dtbo]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade
<pkg>]
pkg:[bb-cape-overlays]:[4.14.20200403.0-0rcnee0~buster+20200403]
pkg:[bb-wl18xx-firmware]:[1.20200322.0-0rcnee0~buster+20200322]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.4-git20190227.1-0rcnee0~buster+20190327]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video
plugdev users systemd-journal bluetooth netdev i2c gpio pwm eqep remoteproc
admin spi iio docker tisdk weston-launch xenomai cloud9ide]
cmdline:[console=ttyO0,115200n8 bone_capemgr.uboot_capemgr_enabled=1
root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M
net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[ 11.374832] remoteproc remoteproc0: 4a334000.pru is available
[ 11.397684] remoteproc remoteproc1: 4a338000.pru is available
[ 58.421621] remoteproc remoteproc2: wkup_m3 is available
[ 58.879676] remoteproc remoteproc2: powering up wkup_m3
[ 58.879705] remoteproc remoteproc2: Booting fw image
am335x-pm-firmware.elf, size 217168
[ 58.879995] remoteproc remoteproc2: remote processor wkup_m3 is now up
dmesg | grep pru
[ 11.374832] remoteproc remoteproc0: 4a334000.pru is available
[ 11.375013] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed
successfully
[ 11.397684] remoteproc remoteproc1: 4a338000.pru is available
[ 11.397867] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed
successfully
dmesg | grep pinctrl-single
[ 0.929984] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 0.943137] gpio-of-helper ocp:cape-universal: ready
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
END
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/24e6c7bf-9932-4ee1-b13e-a6bc7f7487den%40googlegroups.com.