Wednesday, August 27, 2014
So what exactly is an FPGA? You may have heard the term thrown around, or maybe you have no idea what I'm talking about. Either way, FPGAs (Field Programmable Gate Arrays) are amazing devices that now allow the average person to create their very own digital circuits. The cost has come down enough that you don't have to be a huge company to get your hands dirty.
You can think of an FPGA as a blank slate. By itself an FPGA does nothing. It is up to you (the designer) to create a configuration file, often called a bit file, for the FPGA. Once loaded the FPGA will behave like the digital circuit you designed!
One of the reasons FPGAs are so awesome is that unlike an ASIC (Application Specific Integrated Circuit) the circuit design is not set and you can reconfigure an FPGA as many times as you like! Creating an ASIC also costs potentially millions of dollars and takes weeks or months to create. That's not exactly hobbyist friendly.
When I first learned about FPGAs, all I really knew about before was microcontrollers. So first it is important to understand that they are verydifferent devices. With a microcontroller, like an Arduino, the chip is already designed for you. You simply write some software, usually in C or C++, and compile it to a hex file that you load onto the microcontroller. The microcontroller stores the program in flash memory and will store it until it is erased or replaced. With microcontrollers you have control over the software.
FPGAs are different. You are the one designing the circuit. There is no processor to run software on, at least until you design one! You can configure an FPGA to be something as simple as an and gate, or something as complex as a multi-core processor. To create your design, you write some HDL (Hardware Description Language). The two most popular HDLs are Verilog and VHDL. You then synthesize your HDL into a bit file which you can use to configure the FPGA. A slight downside to FPGAs is that they store their configuration in RAM, not flash, meaning that once they lose power they lose their configuration. They must be configured every time power is applied.
That is not as bad as it seems as there are flash chips you can use that will automatically configure the stored bit file on power up. There are also some development boards which don't require a programmer at all and will configure the FPGA at startup.
With FPGAs you have control over the hardware.
With a typical microprocessor, you have dedicated pins for specific features. For example there will be only two pins on some microprocessors that are used as a serial port. If you want more than one serial port, or you want to use some other pins, your only solution besides getting a different chip is to use software to emulate a serial port. That works fine except you are wasting valuable processor time with the very basic task of sending out bits. If you want to emulate more than one port then you end up using all your processor time.
With an FPGA you are able to create the actual circuit, so it is up to you to decide what pins the serial port connects to. That also means you can create as many serial ports as you want. The only limitations you really have are the number of physical I/O pins and the size of the FPGA.
Just like microcontrollers that have a set amount of memory for your program, FPGAs can only emulate a circuit so large.
One of the very interesting things about FPGAs is that while you are designing the hardware, you can design the hardware to be a processor that you then can write software for! In fact, companies that design digital circuits, like Intel or nVidia, often use FPGAs to prototype their chips before creating them.
I have a Dell PowerEdge 1900 that boots to VMWare ESXi 4.1 from a USB pen drive. The only real problem I ran across was that it got stuck on loading the megaraid_sas driver on startup. This was fixed by setting kernel options to disable ACPI and power management.
The first solution:
Press SHIFT+O after the system starts booting. You should get a prompt to “Enter advanced options”. Type “noACPI nopowerManagement” and press enter, then enter again to continue booting.
This worked for me and as long as the power stayed on, everything was good. However, I need my servers to come up automatically without operator intervention.
The permanent solution(s):
Method 1: Use the vSphere Client to make changes to the kernel options
In vSphere Client, connect to your server and click on the “Configuration” tab.
Under “Software”, click on “Advanced Settings”.
A new window will open, click on “VMkernel”.
Uncheck the boxes next to both “VMkernel.Boot.ACPI” and “VMkernel.Boot.powerManagement”.
Method 2: Modify /bootbank/boot.cfg
Get to the file system
Option 1: Use a Linux Live CD to access the file system
Option 2: Once ESXi is up and running, connect to the server using SSH.
Add “ACPI=FALSE powerManagement=FALSE” to the “kernalopt=” line in “/bootbank/boot.cfg”
My boot.cfg file ended up looking like this:
kernel=b.z kernelopt=ACPI=FALSE powerManagement=FALSE modules=k.z --- s.z --- c.z --- oem.tgz --- license.tgz --- m.z build=4.1.0-260247 updated=1 bootstate=0
This is something to look out for after installing VMWare ESXi updates, you might have to do it again.
how to: Installing ESXi 5.5 on less than 2GB RAM
Submitted by marafa on Thu, 2014/03/27 - 1:23am
you may know i am trying to set up an esx lab at home. i was trying to do it with nested virtualisation but it wasnt working out very well so instead i dig up an old hp 7800 desktop that i had and slid the cd in.
and it wanted 4gb or ram instead of the 2gb i had. so searching around on the internet tubes i found this article
but it didnt fit my scenario exactly so i had to edit his steps a bit
- Boot the system from CD with the ESXi installer on it.
- Once the installer welcome screen shows up, press alt+1 to go to the first console (login prompt)
- Login as root, no password.
- # cd /usr/lib/vmware/weasel/utils
- There are a few files but the upgrade_precheck.py is of interest to us
- Delete upgrade_precheck.pyc (compiled version)
- Move upgrade_precheck.py to upgrade_precheck.py.old (because the file can not be edited due to some immortal flags and lack of tools to remove these flags)
- Cp upgrade_precheck.py.old > upgrade_precheck.py
- Edit upgrade_precheck.py and search for line that MEM_MIN_SIZE you will find (4 * 1024). Edit the number 4 to make it suitable for you. i made i to 1
- List all processes (ps -c | grep install) and kill the installer by pid
- now in that console run the installer with /bin/install
- Continue as normal
and the install has completed.