Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
12746 Discussions

running Linux without flash

Altera_Forum
Honored Contributor II
1,965 Views

Hello, 

 

I have a custom board without flash memory. http://forum.niosforum.com/work2/style_emoticons/<#EMO_DIR#>/sad.gif So I wonder, if it&#39;s possible to load the Kernel and rootfs ramdisk via UART in the SDRAM and then start it. Any opinions?
0 Kudos
8 Replies
Altera_Forum
Honored Contributor II
1,028 Views

Hi MRks, 

 

If your&#39;re using a cyclone device with enough memory in the epcs to hold the u-boot 

monitor, you can load a ramdisk & kernel via tftp (if you have an ethernet device) or 

serial port with &#39;loadb&#39; (kermit) or &#39;loads&#39; (srecord). u-boot is somewhere in 64K - 132K 

range depending on the features that you enable. 

 

Otherwise, you might want to take a look at how the old germs monitor worked ... and 

do something similar. As I recall, germs was small enough to fit into a 4k on-chip rom. 

 

Regards, 

--Scott
0 Kudos
Altera_Forum
Honored Contributor II
1,027 Views

 

--- Quote Start ---  

originally posted by mrks@Jul 1 2005, 03:58 PM 

i have a custom board without flash memory. http://forum.niosforum.com/work2/style_emoticons/<#emo_dir#>/sad.gif so i wonder, if it&#39;s possible to load the kernel and rootfs ramdisk via uart in the sdram and then start it. any opinions? 

--- Quote End ---  

 

 

Once you have the kernel in memory, you can run you FS via NFS, we do it all the time during development, beats reloading the root FS every time you recompile and test some cgi program or application.
0 Kudos
Altera_Forum
Honored Contributor II
1,028 Views

I have a stratix device with an epc8qc100 serial flash device for the fpga config. Is it possible to use that flash to store the boot loader?

0 Kudos
Altera_Forum
Honored Contributor II
1,028 Views

Yes it is possible to compile the kernel without flash but it requires some patching. 

 

Currently, references to flash exist in the kernel to try and pull out information regarding the MAC address for Altera dev boards (which obviously isn&#39;t required for all projects). I&#39;ll see if I can ressurect the patches that remove the need for flash and post it here for everyone.
0 Kudos
Altera_Forum
Honored Contributor II
1,028 Views

The configuration of u-boot seems very tricky. Has anybody a working configuration example for NIOS II? The examples in the source code are only for NIOS I.

0 Kudos
Altera_Forum
Honored Contributor II
1,028 Views

Now I&#39;ve come so far: I&#39;ve compiled the u-boot for Nios II and I can upload to the board with nios2-download. I get some status messages but no prompt. I&#39;m using the PK1C20 design. 

U-Boot 1.1.2 (Jul  5 2005 - 16:30:56) CPU   : Nios-II SYSID : 505a763f, Wed Dec 13 04:10:46 1995 BOARD : Psyent PK-1C20 Using default environment In:    serial Out:   serial Err:   serial 

 

Here is my configuration file: 

/* * (C) Copyright 2004, Psyent Corporation <www.psyent.com> * Scott McNutt <smcnutt@psyent.com> * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ # ifndef __CONFIG_H# define __CONFIG_H /*------------------------------------------------------------------------ * BOARD/CPU *----------------------------------------------------------------------*/# define CONFIG_PK1C20  1  /* PK1C20 board  */# define CONFIG_SYS_CLK_FREQ    50000000    /* 50 MHz core clk    */ # define CFG_RESET_ADDR  0x01820800    /* Hard-reset address    */# define CFG_EXCEPTION_ADDR    0x01820820    /* Exception entry point*/# define CFG_NIOS_SYSID_BASE    0x01820c90    /* System id address    */# define CONFIG_BOARD_EARLY_INIT_F 1    /* enable early board-spec. init*/ /*------------------------------------------------------------------------ * CACHE -- the following will support II/s and II/f. The II/s does not * have dcache, so the cache instructions will behave as NOPs. *----------------------------------------------------------------------*/# define CFG_ICACHE_SIZE  2048  /* 4 KByte total    */# define CFG_ICACHELINE_SIZE    32  /* 32 bytes/line    */# define CFG_DCACHE_SIZE  2048  /* 2 KByte (II/f)    */# define CFG_DCACHELINE_SIZE    4  /* 4 bytes/line (II/f)    */ /*------------------------------------------------------------------------ * MEMORY BASE ADDRESSES *----------------------------------------------------------------------*/# define CFG_FLASH_BASE  0x01000000    /* FLASH base addr    */# define CFG_FLASH_SIZE  0x00800000    /* 8 MByte  */# define CFG_SDRAM_BASE  0x00000000    /* SDRAM base addr    */# define CFG_SDRAM_SIZE  0x01000000    /* 16 MByte  */ //#define CFG_SRAM_BASE  0x00800000    /* SRAM base addr    */ //#define CFG_SRAM_SIZE  0x00200000    /* 2 MByte  */# undef CFG_SRAM_BASE# undef CFG_SRAM_SIZE /*------------------------------------------------------------------------ * MEMORY ORGANIZATION *    -Monitor at top. *    -The heap is placed below the monitor. *    -Global data is placed below the heap. *    -The stack is placed below global data (&grows down). *----------------------------------------------------------------------*/# define CFG_MONITOR_LEN  (128 * 1024)    /* Reserve 128k  */# define CFG_GBL_DATA_SIZE    128  /* Global data size rsvd*/# define CFG_MALLOC_LEN  (CFG_ENV_SIZE + 128*1024) # define CFG_MONITOR_BASE    TEXT_BASE# define CFG_MALLOC_BASE  (CFG_MONITOR_BASE - CFG_MALLOC_LEN)# define CFG_GBL_DATA_OFFSET    (CFG_MALLOC_BASE - CFG_GBL_DATA_SIZE)# define CFG_INIT_SP  CFG_GBL_DATA_OFFSET /*------------------------------------------------------------------------ * FLASH (AM29LV065D) *----------------------------------------------------------------------*/# define CFG_MAX_FLASH_SECT    128  /* Max# sects per bank */# define CFG_MAX_FLASH_BANKS    1  /* Max# of flash banks */# define CFG_FLASH_ERASE_TOUT    8000  /* Erase timeout (msec) */# define CFG_FLASH_WRITE_TOUT    100  /* Write timeout (msec) */# define CFG_FLASH_WORD_SIZE    unsigned char    /* flash word size    */ /*------------------------------------------------------------------------ * ENVIRONMENT -- Put environment in sector CFG_MONITOR_LEN above * CFG_RESET_ADDR, since we assume the monitor is stored at the * reset address, no? This will keep the environment in user region * of flash. NOTE: the monitor length must be multiple of sector size * (which is common practice). *----------------------------------------------------------------------*/# undef CFG_CMD_ENV# undef CFG_CMD_FLASH# define CFG_ENV_IS_NOWHERE  /* Environment in flash */# define CFG_ENV_SIZE  (64 * 1024)    /* 64 KByte (1 sector)    */ //#define CONFIG_ENV_OVERWRITE      /* Serial change Ok    */ //#define CFG_ENV_ADDR    (CFG_RESET_ADDR + CFG_MONITOR_LEN) //#undef CFG_ENV_SIZE# undef CONFIG_ENV_OVERWRITE# undef CFG_ENV_ADDR /*------------------------------------------------------------------------ * CONSOLE *----------------------------------------------------------------------*/# define CFG_NIOS_CONSOLE    0x00020c00    /* UART base addr    */ # define CFG_NIOS_FIXEDBAUD    1  /* Baudrate is fixed    */# define CONFIG_BAUDRATE  9600  /* Initial baudrate    */# define CFG_BAUDRATE_TABLE    {9600}    /* It&#39;s fixed;-)    */ # undef CFG_CONSOLE_INFO_QUIET //#define CFG_CONSOLE_INFO_QUIET    1  /* Suppress console info*/ /*------------------------------------------------------------------------ * DEBUG *----------------------------------------------------------------------*/# undef CONFIG_ROM_STUBS    /* Stubs not in ROM    */ /*------------------------------------------------------------------------ * TIMEBASE -- * * The high res timer defaults to 1 msec. Since it includes the period * registers, we can slow it down to 10 msec using TMRCNT. If the default * period is acceptable, TMRCNT can be left undefined. *----------------------------------------------------------------------*/# define CFG_NIOS_TMRBASE    0x01820c40    /* Tick timer base addr */# define CFG_NIOS_TMRIRQ  3  /* Timer IRQ num    */# define CFG_NIOS_TMRMS  1  /* 10 msec per tick    */# define CFG_NIOS_TMRCNT (CFG_NIOS_TMRMS * (CONFIG_SYS_CLK_FREQ/1000))# define CFG_HZ  (CONFIG_SYS_CLK_FREQ/(CFG_NIOS_TMRCNT + 1)) /*------------------------------------------------------------------------ * STATUS LED -- Provides a simple blinking led. For Nios2 each board * must implement its own led routines -- leds are, after all, * board-specific, no? *----------------------------------------------------------------------*/# define CFG_LEDPIO_ADDR  0x01820c80    /* LED PIO base addr    */# define CONFIG_STATUS_LED      /* Enable status driver */ # define STATUS_LED_BIT  1  /* Bit-0 on PIO  */# define STATUS_LED_STATE    1  /* Blinking  */# define STATUS_LED_PERIOD    (500/CFG_NIOS_TMRMS) /* Every 500 msec    */ /*------------------------------------------------------------------------ * ETHERNET -- The header file for the SMC91111 driver hurts my eyes ... * and really doesn&#39;t need any additional clutter. So I choose the lazy * way out to avoid changes there -- define the base address to ensure * cache bypass so there&#39;s no need to monkey with inx/outx macros. *----------------------------------------------------------------------*/# define CONFIG_SMC91111_BASE    0x81830000    /* Base addr (bypass)    */# define CONFIG_DRIVER_SMC91111      /* Using SMC91c111    */# undef    CONFIG_SMC91111_EXT_PHY      /* Internal PHY  */# define CONFIG_SMC_USE_32_BIT      /* 32-bit interface    */ # define CONFIG_ETHADDR  08:00:3e:26:0a:5b# define CONFIG_NETMASK  255.255.255.0# define CONFIG_IPADDR  192.168.2.21# define CONFIG_SERVERIP  192.168.2.16 /*------------------------------------------------------------------------ * COMMANDS *----------------------------------------------------------------------*/# define CONFIG_COMMANDS  (CFG_CMD_BDI    |     CFG_CMD_DHCP    |     CFG_CMD_ECHO    |     /*CFG_CMD_ENV    |       CFG_CMD_FLASH    |     */ CFG_CMD_IMI    |     CFG_CMD_IRQ    |     CFG_CMD_LOADS    |     CFG_CMD_LOADB    |     CFG_CMD_MEMORY |     CFG_CMD_MISC    |     CFG_CMD_NET    |     CFG_CMD_PING    |     CFG_CMD_RUN    |     CFG_CMD_SAVES    )# include <cmd_confdefs.h> /*------------------------------------------------------------------------ * MISC *----------------------------------------------------------------------*/# define CFG_LONGHELP    /* Provide extended help*/# define CFG_PROMPT  "==> "  /* Command prompt    */# define CFG_CBSIZE  256  /* Console I/O buf size */# define CFG_MAXARGS  16  /* Max command args    */# define CFG_BARGSIZE  CFG_CBSIZE    /* Boot arg buf size    */# define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print buf size */# define CFG_LOAD_ADDR  CFG_SDRAM_BASE    /* Default load address */# define CFG_MEMTEST_START    CFG_SDRAM_BASE    /* Start addr for test    */# define CFG_MEMTEST_END  CFG_INIT_SP - 0x00020000 # endif    /* __CONFIG_H */
0 Kudos
Altera_Forum
Honored Contributor II
1,028 Views

Hi MRKs, 

 

You have the timer IRQ set to 3 ... is this correct? 

 

--Scott
0 Kudos
Altera_Forum
Honored Contributor II
1,028 Views

Hi marc, 

<div class='quotetop'>QUOTE </div> 

--- Quote Start ---  

you can run you FS via NFS, we do it all the time during development[/b] 

--- Quote End ---  

 

could you please explain how to do that in details, and please step by step http://forum.niosforum.com/work2/style_emoticons/<#EMO_DIR#>/smile.gif  

 

Warm Regards
0 Kudos
Reply