[U-Boot] [PATCH] NIOS2: Added DE2 board with SD support
Scott McNutt
smcnutt at psyent.com
Sun Mar 8 01:53:24 CET 2009
Patch is rejected -- incomplete.
Ivan,
Contact me off-list ... we can discuss how to proceed.
Regards,
--Scott
ivanchuklist ivanchu wrote:
> Hi list,
> I wrote about my work with u-boot in the thread "[U-Boot] DE2 board with MMC
> interface (PIO based) and FAT support enabled" and i decided to post a
> patch. I would like to discuss the changes.
> I have changed the Makefile to match the binutils provided by Altera and i
> added the DE2 board.
> I have also made changes to the files cmd_mem.c to add one more command
> "dmmc". Because the SD card is not a memory mapped device in the bus like a
> flash memory, we can't deduce the direction of data (i mean when copying
> data to sd or from sd) with the function mmc2info(). I tried to solve this
> trick by using the command dmmc.
> I found problems at link level with cmd_mmc.o and cmd_mem.o because both
> files includes mmc.h, then i have two copies of the same functions in both
> objects files. I solved this problem by declaring extern the function
> mmc_init in cmd_mmc.c.
> I think i should post the file include/asm-nios2/arch-nios2/mmc.h and the
> board related files but i will wait your response.
> In include/asm-nios2/arch-nios2/mmc.h i implemented mmc_get_dev() and
> mmc_read_block() to provide access to the FAT table.
> The code is working with all the examples distributed by Altera in the DE2
> board and it should work with any SD socket interfaced by PIO cores.
>
> diff --git a/Makefile b/Makefile
> index 4df4812..6501d08 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -163,7 +163,7 @@ ifeq ($(ARCH),nios)
> CROSS_COMPILE = nios-elf-
> endif
> ifeq ($(ARCH),nios2)
> -CROSS_COMPILE = nios2-elf-
> +CROSS_COMPILE = nios2-linux-
> endif
> ifeq ($(ARCH),m68k)
> CROSS_COMPILE = m68k-elf-
> @@ -3137,6 +3137,9 @@ PK1C20_config : unconfig
> PCI5441_config : unconfig
> @$(MKCONFIG) PCI5441 nios2 nios2 pci5441 psyent
>
> +DE2_config : unconfig
> + @$(MKCONFIG) DE2 nios2 nios2 de2 altera
> +
> #========================================================================
> ## Microblaze
> #========================================================================
> diff --git a/common/cmd_mem.c b/common/cmd_mem.c
> index 400cfd7..4585795 100644
> --- a/common/cmd_mem.c
> +++ b/common/cmd_mem.c
> @@ -53,6 +53,7 @@ uint dp_last_length = 0x40;
> uint mm_last_addr, mm_last_size;
>
> static ulong base_address = 0;
> +static ulong mmc_direction = 0;
>
> /* Memory Display
> *
> @@ -355,6 +356,17 @@ int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc,
> char *argv[])
> return rcode;
> }
>
> +int do_dmmc( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> +{
> + if (argc > 1)
> + mmc_direction = simple_strtoul(argv[1], NULL, 10);
> + if (mmc_direction)
> + printf("Mem to mmc\n");
> + else
> + printf("Mmc to mem\n");
> + return 0;
> +}
> +
> int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> {
> ulong addr, dest, count;
> @@ -405,7 +417,7 @@ int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc,
> char *argv[])
> #endif
>
> #if defined(CONFIG_CMD_MMC)
> - if (mmc2info(dest)) {
> + if (mmc_direction) {
> int rc;
>
> puts ("Copy to MMC... ");
> @@ -422,9 +434,7 @@ int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc,
> char *argv[])
> }
> puts ("done\n");
> return 0;
> - }
> -
> - if (mmc2info(addr)) {
> + } else {
> int rc;
>
> puts ("Copy from MMC... ");
> @@ -1221,6 +1231,14 @@ U_BOOT_CMD(
> "[.b, .w, .l] address value [count]\n - write memory\n"
> );
>
> +#if defined(CONFIG_CMD_MMC)
> +U_BOOT_CMD(
> + dmmc, 2, 1, do_dmmc,
> + "dmmc - set mmc-memory copy direction\n",
> + "direction\n - copy mmc<->mem\n"
> +);
> +#endif
> +
> U_BOOT_CMD(
> cp, 4, 1, do_mem_cp,
> "cp - memory copy\n",
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index 25c9702..c9a5ac6 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -23,7 +23,8 @@
>
> #include <common.h>
> #include <command.h>
> -#include <mmc.h>
> +
> +extern int mmc_init(int);
>
> int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> {
> @@ -31,6 +32,7 @@ int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char
> *argv[])
> printf ("No MMC card found\n");
> return 1;
> }
> + printf ("MMC card found\n");
> return 0;
> }
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
More information about the U-Boot
mailing list