fixed a few compiler warnings
This commit is contained in:
@@ -29,8 +29,35 @@
|
|||||||
|
|
||||||
#include <bas_types.h>
|
#include <bas_types.h>
|
||||||
|
|
||||||
extern inline void wait(uint32_t us);
|
typedef uint32_t (*checker_func)(void);
|
||||||
extern inline bool waitfor(uint32_t us, int (*condition)(void));
|
|
||||||
|
|
||||||
|
extern __inline__ void wait(uint32_t) __attribute__((always_inline));
|
||||||
|
extern __inline__ uint32_t waitfor(uint32_t us, checker_func condition) __attribute__((always_inline));
|
||||||
|
/*
|
||||||
|
* wait for the specified number of us on slice timer 0. Replaces the original routines that had
|
||||||
|
* the number of useconds to wait for hardcoded in their name.
|
||||||
|
*/
|
||||||
|
extern __inline__ void wait(uint32_t us)
|
||||||
|
{
|
||||||
|
uint32_t target = MCF_SLT_SCNT(0) - (us * 132);
|
||||||
|
|
||||||
|
while (MCF_SLT_SCNT(0) > target);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the same as above, with a checker function which gets called while
|
||||||
|
* busy waiting and allows for an early return if it returns true
|
||||||
|
*/
|
||||||
|
extern __inline__ uint32_t waitfor(uint32_t us, checker_func condition)
|
||||||
|
{
|
||||||
|
uint32_t target = MCF_SLT_SCNT(0) - (us * 132);
|
||||||
|
uint32_t res;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ((res = (*condition)()))
|
||||||
|
return res;
|
||||||
|
} while (MCF_SLT_SCNT(0) > target);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#endif /* _WAIT_H_ */
|
#endif /* _WAIT_H_ */
|
||||||
|
|||||||
@@ -1,89 +0,0 @@
|
|||||||
#!/usr/local/bin/bdmctrl -D2
|
|
||||||
#
|
|
||||||
# firebee board initialization for bdmctrl
|
|
||||||
#
|
|
||||||
open $1
|
|
||||||
reset
|
|
||||||
sleep 10000
|
|
||||||
|
|
||||||
wait
|
|
||||||
|
|
||||||
# set VBR
|
|
||||||
#write-ctrl 0x0801 0x00000000
|
|
||||||
sleep 10
|
|
||||||
# Turn on MBAR at 0xFF00_0000
|
|
||||||
write-ctrl 0x0C0F 0xFF000000
|
|
||||||
|
|
||||||
# Turn on MMUBAR at 0xFF04_0000
|
|
||||||
write-ctrl 0x0008 0xFF040001
|
|
||||||
|
|
||||||
# Turn on RAMBAR0 at address FF10_0000
|
|
||||||
write-ctrl 0x0C04 0xFF100007
|
|
||||||
sleep 10
|
|
||||||
# Turn on RAMBAR1 at address FF10_1000
|
|
||||||
write-ctrl 0x0C05 0xFF101001
|
|
||||||
sleep 10
|
|
||||||
|
|
||||||
# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes)
|
|
||||||
write 0xFF000500 0xE0000000 4
|
|
||||||
write 0xFF000508 0x00001180 4
|
|
||||||
write 0xFF000504 0x007F0001 4
|
|
||||||
# Init CS1 (Atari I/O address range)
|
|
||||||
write 0xFF00050C 0xFFF00000 4
|
|
||||||
write 0xFF000514 0x00002180 4
|
|
||||||
write 0xFF000510 0x000F0001 4
|
|
||||||
# Init CS2 (FireBee 32 bit I/O address range)
|
|
||||||
write 0xFF000518 0xF0000000 4
|
|
||||||
write 0xFF000520 0x00002100 4
|
|
||||||
write 0xFF00051C 0x07FF0001 4
|
|
||||||
# Init CS3 (FireBee 16 bit I/O address range)
|
|
||||||
write 0xFF000524 0xF8000000 4
|
|
||||||
write 0xFF00052C 0x00000180 4
|
|
||||||
write 0xFF000528 0x03FF0001 4
|
|
||||||
# Init CS4 (FireBee video address range)
|
|
||||||
write 0xFF000530 0x40000000 4
|
|
||||||
write 0xFF000538 0x00000018 4
|
|
||||||
write 0xFF000534 0x003F0001 4
|
|
||||||
|
|
||||||
|
|
||||||
# SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes
|
|
||||||
write 0xFF000004 0x000002AA 4 # SDRAMDS configuration
|
|
||||||
write 0xFF000020 0x0000001A 4 # SDRAM CS0 configuration (128Mbytes 0000_0000 - 07FF_FFFF)
|
|
||||||
write 0xFF000024 0x0800001A 4 # SDRAM CS1 configuration (128Mbytes 0800_0000 - 0FFF_FFFF)
|
|
||||||
write 0xFF000028 0x1000001A 4 # SDRAM CS2 configuration (128Mbytes 1000_0000 - 17FF_FFFF)
|
|
||||||
write 0xFF00002C 0x1800001A 4 # SDRAM CS3 configuration (128Mbytes 1800_0000 - 1FFF_FFFF)
|
|
||||||
write 0xFF000108 0x73622830 4 # SDCFG1
|
|
||||||
write 0xFF00010C 0x46770000 4 # SDCFG2
|
|
||||||
|
|
||||||
write 0xFF000104 0xE10D0002 4 # SDCR + IPALL
|
|
||||||
write 0xFF000100 0x40010000 4 # SDMR (write to LEMR)
|
|
||||||
write 0xFF000100 0x048D0000 4 # SDMR (write to LMR)
|
|
||||||
write 0xFF000104 0xE10D0002 4 # SDCR + IPALL
|
|
||||||
write 0xFF000104 0xE10D0004 4 # SDCR + IREF (first refresh)
|
|
||||||
write 0xFF000104 0xE10D0004 4 # SDCR + IREF (first refresh)
|
|
||||||
write 0xFF000100 0x008D0000 4 # SDMR (write to LMR)
|
|
||||||
write 0xFF000104 0x710D0F00 4 # SDCR (lock SDMR and enable refresh)
|
|
||||||
|
|
||||||
write 0xFF000240 0x80000000 4 # disable watchdog arbiter
|
|
||||||
|
|
||||||
# notify flashlib that we have flash at address 0xE0000000, length 0x7FFFFF, plugin is flash29
|
|
||||||
flash 0xE0000000
|
|
||||||
# do not flash yet. First check if board can be initialized correctly
|
|
||||||
|
|
||||||
#flash-plugin 0x10000000 0x4000 flash29.plugin
|
|
||||||
|
|
||||||
# contrary to documentation, it seems we need to erase-wait after each sector
|
|
||||||
erase 0xE0000000 0
|
|
||||||
erase-wait 0xE0000000
|
|
||||||
erase 0xE0000000 0x1000
|
|
||||||
erase-wait 0xE0000000
|
|
||||||
erase 0xE0000000 0x2000
|
|
||||||
erase-wait 0xE0000000
|
|
||||||
erase 0xE0000000 0x3000
|
|
||||||
erase-wait 0xE0000000
|
|
||||||
|
|
||||||
load -v bas.elf
|
|
||||||
#load -v ram.elf
|
|
||||||
wait
|
|
||||||
sleep 100
|
|
||||||
execute
|
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
#include <sd_card.h>
|
#include <sd_card.h>
|
||||||
#include <bas_printf.h>
|
#include <bas_printf.h>
|
||||||
#include <sysinit.h>
|
#include <sysinit.h>
|
||||||
|
#include <wait.h>
|
||||||
#include <MCF5475.h>
|
#include <MCF5475.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -168,7 +169,6 @@ static void xmit_spi_multi(const uint8_t *buff, uint32_t btx)
|
|||||||
|
|
||||||
static uint32_t card_ready(void)
|
static uint32_t card_ready(void)
|
||||||
{
|
{
|
||||||
static uint32_t counter = 0;
|
|
||||||
uint8_t d;
|
uint8_t d;
|
||||||
|
|
||||||
d = xchg_spi(0xff);
|
d = xchg_spi(0xff);
|
||||||
|
|||||||
@@ -29,30 +29,3 @@
|
|||||||
#include <MCF5475.h>
|
#include <MCF5475.h>
|
||||||
|
|
||||||
#include <wait.h>
|
#include <wait.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* wait for the specified number of us on slice timer 0. Replaces the original routines that had
|
|
||||||
* the number of useconds to wait for hardcoded in their name.
|
|
||||||
*/
|
|
||||||
inline void wait(uint32_t us)
|
|
||||||
{
|
|
||||||
uint32_t target = MCF_SLT_SCNT(0) - (us * 132);
|
|
||||||
|
|
||||||
while (MCF_SLT_SCNT(0) > target);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* the same as above, with a checker function which gets called while
|
|
||||||
* busy waiting and allows for an early return if it returns true
|
|
||||||
*/
|
|
||||||
inline bool waitfor(uint32_t us, int (*condition)(void))
|
|
||||||
{
|
|
||||||
uint32_t target = MCF_SLT_SCNT(0) - (us * 132);
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if ((*condition)())
|
|
||||||
return TRUE;
|
|
||||||
} while (MCF_SLT_SCNT(0) > target);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user