[coreboot] Asus F2A85-M progress

Idwer Vollering vidwer at gmail.com
Tue Dec 18 12:41:47 CET 2012


2012/12/18 David Hubbard <david.c.hubbard+coreboot at gmail.com>:
> Hi all,
>
> On Mon, Dec 17, 2012 at 6:40 AM, Bernhard Urban <lewurm at gmail.com> wrote:
>>
>> On Mon, Dec 17, 2012 at 2:33 PM,  <darkdefende at gmail.com> wrote:
>> > Rudolf Marek writes:
>> >> Maybe it is slowly time to prepare a patch, I think I will need to write a
>> >> porting guide + specific AGESA bits.
>> >
>> > I would be really helpful if you would write a guide. I've been trying to
>> > port the asus m5a88 board to agesa but I haven't managed to get it working
>> > correctly yet.
>> > So a guide explaining how to port + AGESA would be great.
>>
>> +1
>> similar situation here with the asus m5a99x (yeah, progress is slow... :))
>>
>>
>> btw, great work ruik :-)
>>
>
> Seconded! (Thirded?) I'd also be very interested to read a porting
> guide even though I have the f2a85-m board.
>
> If I can assist with the m5a99x and m5a88 in any way, I'd be happy to.
>
> I got SerialICE to start up and respond to simple commands. (I haven't
> run the BIOS image in Qemu yet, but commands such as *mb work.)
>
> I selected the Asus M4A77TD_PRO board. Since SerialICE only needs to
> know how to init the chipset and superio enough to talk to the serial
> port, this is close enough. If you'd like to try SerialICE on a board
> other than mine (f2a85-m/csm) you should check src/mainboard/<your
> board>/romstage.c and start at cache_as_ram_main()
>
> For example, src/mainboard/amd/thatcher/
> romstage.c has only a few lines before it8712f_enable_serial() gets
> called. The code in it8712f_enable_serial() is also important.
>
> I compared the coreboot code to SerialICE/mainboard/asus_m4a77td_pro.c
> chipset_init()
>
> The same i/o is done even though it is for a different chipset and
> superio, so I decided to give it a try. I made sure to have a backup
> flash chip in a safe place in case this didn't work.
>
> Here's a shell script to build SerialICE -- checks it out from svn,

SerialICE code is in a git repo nowadays: git clone
http://review.coreboot.org/p/serialice.git

You should read this wiki page, http://www.coreboot.org/Git and push a
changeset with git.
Replace '/coreboot' with '/serialice', in this chapter:
http://www.coreboot.org/Git#Pushing_changes

> then builds serialice.rom in the current directory. The flash image is
> filled with 0xff bytes because flashrom is smart enough to only write
> to blocks that differ. SerialICE itself generates a flash image by
> repeating the same 64K SerialICE rom from the start of the chip to the
> end -- nothing wrong with that, I just wanted faster flashing by not
> changing blocks unless necessary.
>
> You will most likely need to edit the script to change the size of the
> flash image. SerialICE itself is only 64K, but for an 8MB flash I get:
> sha256sum serialice.rom
> cd5b283bdcc017b3f27ee4064b9ec238d8223a7b04a7e69cad2e85a158b3cd90 serialice.rom
>
>
> *************************************************
> #!/bin/bash
> # use set -e once errors handle ok
>
> MISSING=""
> INSTALL=""
> C=""
> if type apt-get >/dev/null 2>&1; then
>     C="apt-get install"
> elif type emerge >/dev/null 2>&1; then
>     C="emerge -av"
> elif type yum >/dev/null 2>&1; then
>     C="yum install"
> fi
> export C
>
> add_install()
> {
>     MISSING="$MISSING $1"
>     export MISSING
>     INSTALL="$INSTALL $2"
>     export INSTALL
> }
>
> is_installed()
> {
>     type $1 >/dev/null 2>&1 || add_install $*
> }
>
> is_installed svn subversion
> is_installed gcc gcc
> if [ -n "$INSTALL" ]; then
>     echo "Missing tools:$MISSING"
>     echo "  Please type: sudo $C$INSTALL"
>     echo "  and try again"
>     exit 1
> fi
>
> if [ ! -d SerialICE ]; then
>     svn co svn://serialice.com/serialice/trunk/SerialICE SerialICE || exit 1
> fi
>
> cd SerialICE || exit 1
>
> #
> # copy of my .config file: Asus M4A77TD_PRO board
> # note: build/config.h is tightly coupled to .config: update both at
> the same time
> #
> cat <<EOF > .config || exit 1
> CONFIG_BOARD_ASUS_M4A77TD_PRO=y
> CONFIG_BOARD_INIT="asus_m4a77td-pro.c"
> CONFIG_SERIAL=y
> # CONFIG_USB is not set
> CONFIG_SERIAL_COM1=y
> # CONFIG_SERIAL_COM2 is not set
> CONFIG_SERIAL_PORT=0x3f8
> CONFIG_SERIAL_115200=y
> # CONFIG_SERIAL_57600 is not set
> # CONFIG_SERIAL_38400 is not set
> # CONFIG_SERIAL_19200 is not set
> # CONFIG_SERIAL_9600 is not set
> CONFIG_SERIAL_BAUDRATE=115200
> # CONFIG_EXPERIMENTAL is not set
> CONFIG_EXPERT=y
> CONFIG_HAVE_SSE=y
> CONFIG_BUILD_ROMCC=y
> # CONFIG_BUILD_XMMSTACK is not set
> EOF
>
> mkdir -p build || exit 1
> cat <<EOF > build/config.h || exit 1
> /*
>  * Automatically generated C config: don't edit
>  * SerialICE version: 1.5
>  * Mon Dec 17 21:09:33 2012
>  */
> #define AUTOCONF_INCLUDED
> #define CONFIG_SERIAL_COM1 1
> #define CONFIG_BUILD_ROMCC 1
> #define CONFIG_SERIAL_115200 1
> #define CONFIG_SERIAL_PORT 0x3f8
> #define CONFIG_SERIAL_BAUDRATE 115200
> #define CONFIG_HAVE_SSE 1
> #define CONFIG_BOARD_ASUS_M4A77TD_PRO 1
> #define CONFIG_SERIAL 1
> #define CONFIG_EXPERT 1
> #define CONFIG_BOARD_INIT "asus_m4a77td-pro.c"
> EOF
>
> #
> # build serialice.rom
> #
> make -j5 || exit 1
> cd .. || exit 1
>
> # pad serialice.rom to the size of the flash chip
> S=$(( 8*1048576 ))
> awk "BEGIN{for (i=0; i<$(( $S / 16 )); i++) printf
> \"\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\";exit}"
>> serialice.rom
> dd if=SerialICE/build/serialice.rom of=serialice.rom bs=4096
> conv=notrunc # put serialice.rom at start of flash
> dd if=SerialICE/build/serialice.rom of=serialice.rom bs=4096 seek=$((
> ( $S - `stat -c %s SerialICE/build/serialice.rom` )/4096 )) # and at
> end of flash
> echo ""
> echo "Now build SerialICE QEMU Host (see SerialICE/patches/* and
> serialice.com/Installation.html)"
> ls --color=always -l serialice.rom
>
>
> *************************************************
>
> Regards,
> David
>
> --
> coreboot mailing list: coreboot at coreboot.org
> http://www.coreboot.org/mailman/listinfo/coreboot



More information about the coreboot mailing list