low level shell

Bryan E. Chafy bchafy at ccs.neu.edu
Wed Oct 27 21:49:01 CEST 2004


Apologies if this is a redundant contribution.

None of my pc motherboards have JTAG or HW debug capabilites.
And constantly (hot)flashing, changing ram init code, then (hot)flashing again 
gets old really fast.
Looking around, I couldnt find any debug tools that would operate at
basically the reset vector level.  I thought this was the goal of openbios,
but I got lost in all the jibberish about 4th and firmware standards.

So I set out to make a small interactive low level shell with the goal
of providing at least some tools to aid in board/memory bringup and debugging.
This was nontrivial given the system limitations, however I got a few
things to work.

Attached is llshell.inc (for linuxbios1, Ive not tried any of the new
stuff yet) and llshell_linux (for running/testing inside of linux).
It's written entirely in asm and can run in a memoryless early stage
(say at the beginning of ram_set_registers or points afterword).

List of commands:

beep                    -- pc speaker beep
rst (or RST)            -- reset
out(b,w,l) <val> <port> -- raw out val at port
in(b,w,l)  <port>       -- show raw port value
jmp  <address>          -- jmp to address (llshell addr is in eax)
call <address>          -- funcion call (assumes a working stack)
cli                     -- clear interrupts
sti                     -- enable interrupts
push <value>            -- push value onto stack
pop                     -- pop from stack and display
wm(b,w,l) <addr> <val>  -- write mem
dm   <addr> <lines>     -- dump mem
mcp  <src> <dst> <size> -- mem copy
mpat <pat> <dst> <size> -- mem pattern
memt <begin> <end>      -- memory test
pcir(b,w,l) <loc>       -- pci read config
pciw(b,w,l) <loc> <val> -- pci write config
dl   <addr> <size>      -- memory download (display xor cheksum at completion)
cram <addr> <size>      -- enable cache to be ram (experimental)
baud <val>              -- change baudrate (not yet implemented)
exit                    -- exit shell
All values in hex (0x prefixing ok)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llshell.tar.gz
Type: application/x-tar-gz
Size: 16947 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20041027/2a59c312/attachment.bin>


More information about the coreboot mailing list