FreeCalypso > hg > freecalypso-tools
view target-utils/pirexplore/main.c @ 497:74610c4f10f7
target-utils: added 10 ms delay at the end of abb_power_off()
The deosmification of the ABB access code (replacement of osmo_delay_ms()
bogus delays with correctly-timed ones, which are significantly shorter)
had one annoying side effect: when executing the poweroff command from
any of the programs, one last '=' prompt character was being sent (and
received by the x86 host) as the Calypso board powers off. With delays
being shorter now, the abb_power_off() function was returning and the
standalone program's main loop was printing its prompt before the Iota chip
fully executed the switch-off sequence!
I thought about inserting an endless tight loop at the end of the
abb_power_off() function, but the implemented solution of a 10 ms delay
is a little nicer IMO because if the DEVOFF operation doesn't happen for
some reason in a manual hacking scenario, there won't be an artificial
blocker in the form of a tight loop keeping us from further poking around.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 25 May 2019 20:44:05 +0000 |
parents | c90b1fff224a |
children |
line wrap: on
line source
#include "types.h" main() { uart_select_init(); printf("Pirelli hardware exploration utility running\n"); print_boot_rom_info(); /* * Make the same register settings as in the init script used by * fc-loadtool and fc-xram: ../../loadtools/scripts/pirelli.init */ *(volatile u16 *)0xfffffb00 = 0x00A4; *(volatile u16 *)0xfffffb02 = 0x00A4; *(volatile u16 *)0xfffffb06 = 0x00A4; *(volatile u16 *)0xfffef006 = 0x0008; /* setup matching what the official firmware does */ *(volatile u16 *)0xfffef008 = 0x6050; *(volatile u16 *)0xfffef00a = 0x021F; /* * Other register settings replicating what OsmocomBB does * in board/pirelli_dpl10/init.c */ *(volatile u16 *)0xfffe4804 = 0xFF6D; *(volatile u16 *)0xfffe4802 = 0x0000; /* enable ARMIO clock in order to exercise buzzer/vibrator */ *(volatile u16 *)0xfffe4806 = 0xFFF3; /* nCS4 setup for SPCA552E */ *(volatile u16 *)0xfffffb0a = 0x00A7; /* initialize PWL registers like OsmocomBB does */ *(volatile u8 *)0xfffe8000 = 0x32; *(volatile u8 *)0xfffe8001 = 0x01; for (;;) { putchar('='); if (command_entry()) command_dispatch(); } }