What's up everybody? Jason here for jasperyskatespace.com. We just sold out a World Cup promo break. Yes guys, we have a new promo. It's a World Cup promo, so meaning, kinda similar to our Jersey Fest. Basically, we gotta sell out either 32 breaks or 32 promo spots worth of breaks. Some promo breaks will have two spots for World Cup, some of them only have one. But basically, they'll have 32 winners, one in every break, then we'll randomize the 32 names with a team in the World Cup. And then, basically, either your team wins the World Cup, you win the top prize, which is a $3,000 case of UEFA Champions League Merlin Soccer. If your team has the player that wins the Golden Boot, which scores the most goals in the tournament, you get a case of UEFA Champions League Soccer Finals, which is a $1600 value. This was kinda funny, it's interesting to me. If your team scores the least amount of goals, so if you get a team that's not so good, just root for them, really hard to not score. And then, you get a 2022 Leaf Pro Set Soccer 10 box case, which is a $1100 value. If your team is runner up in the World Cup, second place, you get two 8 box cases of Bundesliga Soccer, which is an $1100 value. And then, of course, just for winning a promo spot, no matter what, we're sending you about $100 Mosaic Euro Hobby Box, so we'll send out 32 of those, $3200, and totaling up over $10,000 in prizes. So, if you look on the World Cup promo page, all of those are there. I think right now we only have 16 promo bricks, or 16 spots of promos up on the website, so we're only halfway through. We have about like nine, 10 days, so I think we'll get this done by then. So this is one of them. The second half, of course, is on the website down to three, and like I said, what we'll do is, of course, we'll do the break, just like normal, then at the end, we'll gather up all the names that bought in here, randomize them, and then, of course, one person wins a promo spot, and it'll be the first promo break of the World Cup promo. So here we go, guys, let's do the break now. So again, these are the customers that bought in. Thank you guys so much. Then Eric got the 11 team combo, which of course, are these 11 teams here? So just wanted to show you guys that. This is a case of World Cup, and this is actually our last case. I sold a case yesterday on Instagram, so that is it, no moss. Now, of course, I'm sure we'll get more. Price could go up, but we'll, like I said, we'll probably most likely do get more, but at least not for this weekend. Six on the left, six on the right, and let's switch scenes. Now let's generate which one we'll use here. One, two, three, left, four, five, six, right. Two, so one, two, three, we're gonna go at the left side, so these remaining boxes we'll go for Numero Seis. Oh, well, I did about three cases on IG. We hit some really nice stuff, but yesterday's case was posted, and someone bought all 12, and they decided they wanted to rip that themselves, so they'll get to rip it themselves, but on Instagram though, I managed to pull quite a few nice hits. I pulled this one yesterday, Vinny Jr. This was one of the remaining case I had before we sold out the last one. Pulled a Pele Auto, pulled this Gold for Argentina, Carlos Deves, and then I pulled all these right here, which are pretty nice, and I put even pulled the Kade there, but soccer-wise, we pulled a lot of good stuff on Instagram. All right, pulled a Deymar, a lot of good stuff. All right, Kev, well, that's not sold out just yet, buddy, we have a filler for that, but basically the filler will sell out the whole break, so it'll go at some point tonight. Yeah, the only messie I've pulled so far has been like a color messie. It was like one of those non-numbered pinks, and then we've pulled a bunch of like silver, you know, chorus club or one of those inserts, but I don't think it's much messy, just base cards for me, for my cases I've done it. Ferri and Doris, for Spain to start us off. That's to $1.99. We got a Stefan for Canada. We got Salim, we got Collins, Cameroon, we got a Arnold, Don Juma, and number to 10, gold for England. Who has England? David B, this guy looks like he's an older English player, right? Paul with an NC, will you pronounce it? Six of 10, gold. And again, guys, I'm not the biggest soccer fan, but I do love World Cup Town. There you go, a little gold right there. And we got a Ruben Diaz, and a Saudi Arabia team logo. All right, that's a nice autograph to start us off. Melanchovic, Antoni, connections, Pedro Miguel, all right, we got Romelu, little Kai Havertz for Germany, 275, Elias, there's the first box there, your colors, and then we got one autograph and it was a gold. First off there for the Netherlands, Lerardo Ortega for Mexico, Marine Benzema at Yan, and for Japan, Takumi International Inc. Who has Japan? That's right, I think it was Eric, right? Yeah, Eric got Japan. We got Antoni Red, Silver Mateo, and Switzerland team logo. For Canada, Ugo, 299, Harry Kane, Noah Okufor, Ruben Diaz, Min Jay Kim, and Christian Pulsak. Second box now, gold's a third now, and then we'll be halfway through. All right, next one, guys, here we go. Press now, number 299 for Germany. Germany, gotta go to Timothy Carr. Sardar, Romain, Marcelo Flores, Silver, and Sosa, barely any color on this side, so I assume, second I was gonna have a lot of nice color. I like that color, I'm seeing. Angel de Maria, International Inc. for Argentina.  We got Andres Gove Olson for Denmark, and we got a Japan team logo. Lucas Toreria, Ramsay for Wales. We don't random the World Cup spot to the end of the break, so you do the break first, and then we randomize the names, and then give it up for Helio, Rashalison, and Carl Tocco. Officially halfway through, guys. Tell me what's confusing you, Jonathan, and I'll see if I can help. Don't let you slip in now. Oh, shit, I got a lot of oars. Let me see if I can make sure I don't lose any pages. 10, 10, 10, 3, 3. Yes, but there's not gonna be 32 breaks, though, Jonathan. There'll be 32 spots given away. Some breaks will have two World Cup spots, some breaks will have one. Nick is the one deciding which one gets entered for two, which one gets entered for one. So it wasn't like the Jersey Fest, so there was only one per. This one's gonna have two promo spots in one break. Once the break's gonna have one promo spot. So we're not actually gonna do 32 breaks. We're probably gonna do a little bit less. But that's all up to Nick on how many breaks he decides to post up. But basically we have to fill up 32 spot promo breaks, per se. So right now there's one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen breaks up, but there's 16 spots on there. Yeah, so it's exactly like the last promo. It's just some of them will have two promo spots. Some of them won't. And again, just like the other ones, fillers won't count, but the winners from the fillers will of course get into the promo break, which means those eight customers, those five customers, those X amount of customers, now will have the opportunity. Oh, well, yeah. I mean, maybe Nick forgot to put that part, but that's how it's done. That's how to do it. It's just like the last promo, that's all. Because then there wouldn't be no way to decide who wins the promo spot, you know? So it'd have to be just randomized like normal. So, yeah. But thank you for reading it though, John. A lot of people don't really read it to it, but... All right, so let's continue on. All right, we got Matthew Ryan. Another Matthew Ryan. Tanaka for Switzerland. Thurden. Those pinks are not numbered, but... Oh, we got Yellow coming up. And it's Gilberto Silva for Brazil. Another player that probably a little older legendary player. I don't think he's... All right, all right. And we got Zelensky. And that is for Brazil, which is Eric. Bernardo Silva. And these are actually numbered to 22. 5 of the 22 for Australia and Rocket. Marquinhos. And we got Danny Omon. Jeremy Doku. Mateo for Croatia. Jeremy Doku. Yeah, Nick just started it today. He just posted it up early this morning. I didn't see it up early, early in the morning, but I seen it up, I seen it when I woke up. Like officially. I checked my phone and I don't, but yeah, started today. So you guys have like nine days to fill up these breaks. Which I think we will. A lot of these breaks are already almost sold out that are on the page. So you have to see a case hit, so we don't hit any on this side. The second half might be super, super loaded. But I would feel like we're gonna hit one here at least. Therian Torres. We got here blue. Nine. 299. Little Jude. Bellingham. Thomas Porte. Josco. Ooh, we got a redemption. And then we got Jack Greilish. Edison. Timothy for Belgium. All right, and then Ducan. So this is actually also considered a case hit national pride. So Serbia, which I think is part of the combo teams, but usually these fall one to two per case. So that's pretty strong right there. And then we got a Julian Alvaro for Arvind Dino. Ooh, I think he's a big player, right? He's also part of that manga checklist. So I figured he is pretty big. Hannibal. All right, let's check on their redemption right now. All right, let's check it out. International ink Prisms Silver. Card number 52 and Lucas Podolski. Which actually, it was kind of funny. I think this Lucas dude autographs have had a some of them have had a messy sticker on top of his card instead of his autograph. So I don't know, I assume because this was a redemption, it'll be corrected correctly. But I know some live ones I've seen online have had a messy sticker I believe. So let me just pull the checklist of course. I forgot who he's placed for. And this was international ink which silvers are numbered to $199 or less. And then card 52 Germany. So Germany with that one, Timothy. Let's do the last box here guys and then again the second half is in the store I got like 10 orders to go through. I don't know what else is potentially selling out. Looks like Nick put up a couple fillers. NT, soccer filler. Luminaries down to 8. Last filler for hip parades down to 21. 10 left selects. It looks like people are selling out some breaks. Getting on closer and closer. Yeah, Luminaries is moving Martin. I've seen it is down to 8 now. I think we'll be pretty busy tonight guys honestly. So keep it going guys. The earlier the breaks look like they're about to sell in the day I think the more momentum. They're struggling right now and people just getting out of work here on the West Coast soon. Noticing that it's not really moving then they might want to bite into you know or potentially look elsewhere sometimes you know. But I think we're close enough and that promo should help as well. The last box here guys. Let's make this one a good one. Here we go. We got a Sergio Dest for the United States and we got a Kellen Acosta for America. USA, Timothy. We do have Breel in Bolo for Switzerland. Jude Valingham for England. We got another gold. Usually guys, I've been noticing this in every case I've done. We hit a gold base. There has been a case hit in every box. Let's see if that stays and stays the same unless I just jinxed it but hopefully not. We have a gold coming up. What did I say? There you go. There's a gold right there. Let's show the gold first actually. And it's Frankie De Jong for the Netherlands. Who has a Netherlands? Greg, what about that? Look at that. 8 out of 10. So there you go. Two golds in this side and then we'll hold off the national landmark till the end. Let's continue on. So we got at least a national landmark on this side. Manga and potentially color wheel might be in the second half now. Pierre Ville. We got Pervis. And then we got for Morocco, Hakimi. Denzel, Don Fras. And we got Alexander, Matrovic. Our last one here and then we'll go through the national landmark. Alright, here we go guys. Any guesses on the national landmark right now? The Hogwarts? Wow, what a break for the Netherlands. Another Frankie De Jong. So not only did you get a gold, now you have Frankie De Jong national landmark as well. What a break, Greg. Jeez, that is pretty solid. Right behind one another. That is pretty sick. Alrighty guys, and there you go. This is a pretty nice half now. You know, we got two golds, one gold auto. Now landmark gold base. Actually you know what, I just noticed that. It was supposed to be that way, but maybe not. Although the car in the back center is not bad. I think it's just the front then. But, all in all though, there you go. Maria Silva, Julien Alvarez and then the national pride there of Ducan. So there you go guys. And of course we still have all the silvers and stuff. They may stay sleeved, some of them may be top loaded. But all the colors of course will definitely be top loaded. Well, let's do the giveaway. So I know it might not say it in the description here. Which I'll update it right now and add it to the bottom. But basically, you know, for most promo breaks you gotta sell the break and then we'll choose the winner by randomizing it. But basically guys, this will be the first promo break we'll do. And we gotta do potentially up to 32 breaks, but it might be less of course, because some of them will have two spot giveaways. But basically this was only one. So I'll gather up all the names here. All right. Paste it. Let's dice roll it. We got ourselves a five and a three for eight times. Good luck. Five, three, eight. One, two, three, four, five, six, seven, eight. Eight times. And a number one is Grant. I don't know if I called your name Grant, you had Croatia. Congratulations. There you go man, you're the first winner. Paste your name in there. And congrats buddy. So again we gotta do more of these, which of course like I said on the website there's plenty. Second half of a World Cup prism is down to three. Argentina at 3.99, combo spot in Wales. So let's get those last three going guys. Thank you.


So, good morning. Today we are going to discuss something of much greater significance that mentioned last time briefly. Writing device drivers has not been an integral part of our coursework in the digital colleges. It is sadly so even in IIT. So, whenever people have to write device drivers, typically when they are doing their final year project or master's research of IIT, then they figure it out themselves. Now, increasingly in the embedded system where much of the functionality will depend upon the peripherals that you can attach to your basic design board, it becomes mandatory that you are able to write good device drivers and good is important because device drivers often define issues like performance, issues like stability, so on. So, I am very happy to once again welcome Nitin. Nitin has come all the way from Pune as you know last time. He has now two of his new colleagues are not rather new for him, but new for us. One is Anshul. He did his master's from IIT Kanpur and has worked on the operating system for smart cars with Mr. Rajat Munna who is currently the director general of SEALAC. He works with them and we have Devesh who did his compressions from VHU IIT. They both work closely in the Nitin's team on issues related to device drivers and of course related stuff. By the way, when I say device drivers, I must make one point here. I think I had mentioned it earlier. This separation of expertise that person is hardware, this is software, that fellow writes device drivers, that fellow works on something else, etc., etc., is extremely artificial and very dangerous. That is something we emphasize very strongly in IIT system. I would like you to carry that. You would have understood it but would not have imbibed it into you. In the sense that since you study specific syllabus and give exams for specific subjects, you tend to believe that that is all you ought to know, which is completely incorrect. As you would have felt in the internship itself, there is no problem which is bounded by this discipline of that discipline. So whatever is required to solve a problem, you have to study. It so happens that device drivers, good device drivers have to be written. You all have to learn to write device drivers. Attending lectures is merely the beginning of any learning. So you should figure out some assignment for actually writing some device drivers, specific device drivers for interfacing devices. It does not matter whether you take a device to be interfaced through a USB to a micro control. It does not matter what you interface with.  By reading somebody's code, you cannot become an expert program. Similarly, by listening to how to write device drivers and reading somebody else's code, you do not become an expert device driver.  I am working, like I have a work except around 11 years. I have worked on file systems and Linux block layers and device drivers and then like we are with the Einsteiner technologies for couple of years, I am working on a different kind of block, different kind of device drivers, mainly on the embedded systems. So first part, what we are going to cover is that before going into the how to write a device drivers and we are basically will introduce you to the environment, that what kind of environment basically you need before for a embedded like on this board, like this is the board. So on this board, this is the board. So for this board, if you want to write up some particular device driver for, so here you have a lot of, lot many connectors like you can see that you have a ethernet board and then we have serial connectors. So if you connect any device, any new hardware to this particular board, so operating system running on this board should have that particular device driver. So we are going to first cover that how to basically create the environment in which you can develop the device drivers. Then we will come to the part that how we can through the kernel and interaction of the hardware device drivers. So this is the Beagle board. So first you need a hardware board and then what you need is that some kind of operating environment, like some operating system that need to be ported on that particular board. So operating system has one part and you must be knowing that it is a software part and then there is a architecture part. So like if you are porting any operating system on any new hardware, so you have to basically port, change its architecture part to as per the new hardware specification and then you can basically run your operating system on the any given board or any given new hardware. So the first part is that you have to basically create a, you port your operating system on a new board and then you, if you want to write any new drivers, so then you have to write new drivers as per the hardware and hardware specifications and then and before that you have to basically then there is a as you comes that how to compile the drivers and then at last you want to test your drivers. So you have to run your operating system and then load your modules and test it. So nowadays like almost every operating system does provide a mechanism that you have a loadable kernel modules. So you do not have to basically build your kernel every time. You have a loadable kernel modules, run time you can load it and then you can unload it as well. Only thing is that you have to be a little bit careful about releasing the resources of the operating system which you use because generally the kernel drivers runs into the privilege mode. So this is basically the Beagle board. Beagle board is basically a open source hardware. It is mainly for the students and they can use it for their experimental purposes and it was basically introduced by Texas Instrument and Diziki. It has ARM architecture because I have heard about ARM. So it is ARM architecture and mainly for learning purposes it is being used and so this is about the Beagle board. Do you have any questions about the Beagle board or something? We are good.  So it will burn some initial images into the ROM. So now that will basically use for your initial boot up. After that whatever kernel, Linux, Bit, Android or any kernel or any operating system you want. So you have to basically write your loader and then so you have a loader which loads U-boot. So we have like we are coming as a boot loader MLO. So this is basically loads your U-boot. U-boot is and then U-boot is for operating system. So loading the operating system you need some kind of environment or you need to some kind of pass some argument to the kernel that load with let us assume that you have like you want to set board rates or you want to set board rate you are aware of board rate. So like kernel you want to set that what is the board rate of kernel should use basically to communicate. So through U-boot you can do that and then U image is basically the micro image of the kernel. Any kernel it can be Linux, Android, previous D or anything and then there is a root FS. Root FS is basically the operating system requires this root FS where you have all your bindries placed. So like on Linux machine if you type some any command right LS. So that binary is in the root FS. Similarly so root FS is basically required for kernel to kernel per se does not require the root FS but for user to use that particular kernel or particular operating system then you require root FS. So these are basically for Android for Beagle board you can take this U image and root FS from the free electron side and then for basically if you go back so it is so MLO and U boot you take it from the Beagle board side itself and U image and root FS you can take it from the free electron side. So they have like documented variable it is there that how to build your kernel and then how to basically build your root FS then how to build basically your and on Beagle board they provide basic MLO and U-boot. So some U-boot settings you require to change. Right now unfortunately it is we do not have a connector so I cannot show you right now. Nothing is working on that probably at the end we will have a demo that how to basically load the kernel and compile it like we have a compiled kernel but we want to load it and show you that what is the U-boot prompts look like and then what is the kernel prompt look like what it is. Nothing is working on that hopefully we will at the end of the session hopefully we will. So yeah the compilation requires like you have a operating system x86 which is x86 machine and you have a Linux box Linux running on top of that machine now you have another board which is ARM basically this architecture is ARM ARM base and it does not have anything right now no kernel no operating environment.  So what you require? So you require a toolchain the compile toolchain heard about like cross compilation and all okay. So then you build your tool chains and then using those tool chains so that particular like your GCC will create a binary for ARM specific. Still it is running on the x86 box but if you build any binary it will create a binary for ARM ARM hardware. So that is this is why we require toolchain and then using this toolchain you can if you have ported your kernel you have changed the architecture part of the kernel then you can compile your kernel and this will give you the U image.  So this is the order basically this is you need to burn the MLO. So this is the order basically you burn on this particular SD card. So there should be MLO first. So the built in loader on this card will look at the first sector of the this SD card and it assumes that there is a loader over there. If loader is there it will load that particular it will start running load that MLO. So MLO is supposed to be on the first sector of the SD card. Then MLO is programs as that it will load U boot. U boot is something where you can set your parameters that kernel you want to set board rate you want to set consoles like pass the argument to the console.  So your kernel can starting point of the kernel is let's assume that 8000 or any memory address x.  And finally the kernel when kernel initial part is when it started then it looks for root of s so that you can user can get a prompt. Is that part clear right? That how basically the on this particular SD card how it is the images get loaded. Then this is the setting up till now you have kernel image loaded. Now you want to write a particular driver and you want to cross compile it the driver for ARM and then you want to basically load that driver. So what you do is that you have created the tool chain. So on your machine where you are compiling your kernel and creating root of s there itself you basically include that particular tool chain in your path. So the first expression is export path and this is your cross compile it compilation tool chain it will come into the path then there is a cross compile flag. If you look at into the Linux Android is basically Linux based operating system. So if you look at the main make file of the Linux there you will see that there is a cross it has been used for the cross compile flag is used. So and then you say that you want to compile it for or equal to ARM. So like when you cross compile so generally if you compile your program on x86 ball so you do like GCC and then your program. But your cross here will be your like anything main dot c or something. But if you are compiling same program for ARM so it will be something ARM and some prefix. So you basically set this part as a cross compile cross compile in the flag. So whatever prefix you have created your tool chain if you look at the list down the tool chain you will see that this is the before GCC before assembler before loader everything this prefix will be there. So this is the this prefix you want to set it into your cross compile flag and then you export and say that you want to compile it for ARM and then you want to so this is your basically environment setup for the compiling a module and then you this is the make file. So you you are aware about make utility right. So in on the command prompt you can write this GCC something like GCC and then you can give your this files name your program. But for a larger when you are you have hundreds of files you do not want to write or you do not want to compile every file by yourself manually and so you write a make files for that make file is basically utility to make your executable. So in make file like those are typical example of a make file how to you have extra c flags where you can say that the kernel always defines some of the c flags against which the kernel module will be compiled. But you can add your own extra c flag so this is the extra c flags this is the standard keyword and then you can pass that minus g option you want to include symbols in your binary. Then you want to use optimization level two for compiling your program then any any your program needs if any other variable you can define minus d and then your flag. Then you write this obj minus obj-m so this is the keyword basically those are how it assumes that and there whatever name you give name dot o so if you run this make file it will create a module name dot k o k o is basically kernel object so kernel object will be created and this name dot o can be less make of made of lot of files. So how do you specify that which files this particular you need to compile so there you say that name and obj's and then you provide a list of like space separated list of files. Then against which kernel you want to compile your module this you provide that might use this particular kernel source to compile this program and then this p w d like present working directory where you want to basically create your object files this make will create lot of objects files if you want to create it on some temporary space or anywhere you can use this variable. And then then you provide default default is the action basically and then you say that run it it will create your object files you can provide a clean option like you want to just delete all the dot o files you can provide a clean option for that.  So I just coming up that what whatever I told you that we need to basically first like create a cross compiler cross compilation tool chain then you require kernel source downloaded from the sites which I told you then there is a steps mentioned clearly on those on that side you can basically build your kernel then you build kernel third step is basically it create a root of s and fourth is like if you are writing any new device driver which is not there already in the kernel Linux provides lot of device driver in build device drivers are there but if you have written any new particular device driver you basically need to build your kernel module against this particular kernel source and then you need to copy this came on kernel module into root of s some directory in the root of s then you you have this is all is your kernel image and kernel module is ready now if there is a MLO is available on the beagle board side that is the MLO burn it on the SD card this MLO will is using this MLO you can load your load your basically U boot U boot is again being used to load your kernel image on U boot prompt it gives you a prompt basically there you can there is a lot of environment variables if you type print env it will show you that what all parameters you can set so there is print env and you can set any environment variable using set env and then you can basically save env but this is all three commands are there so but the save env writes be very careful well saving particular any environment variable that may that may basically cause your board not to boot so take a copy whatever default parameters are there you save it into some other parameters like if you do the print env you will see that there is a some it will show you that there is a boot arc this is the kernel boot argument it will have console something then you have board rate some like set 2115200 or something like that stop bit and so if you want to change this the recommended way is that you do that set env and name any boot arc old and you save it whatever your boot arc your current boot arc so you take a backup of your this current boot arc and then set your new one if you change directly this it will change your basically the it what I was saying is that there is this there is print env then you have set env and you have save env these are the three commands using which you can change the u boot parameters yeah u boot parameters print env will list down whole lot of whatever parameters are there in the u boot so it will show you the print env set env you can use to change a given parameter or set your create your own new u boot parameter and save env will save that particular on the nand flash of this card so once that is saved the older one is gone so that what I was saying is that you need to take a backup whatever current so like you can write something like boot arc old old is your new new argument and whatever the current value is you can save it into the boot arc old and then you can change then you change boot arc this is this way you basically set up your environment after that you if you type on the u boot prompt boot it will start loading your kernel the kernel which you have burned into the SD card then like it will give whatever you have saved in your root FS you can go and see using like you do CD basically go wherever on the root FS you have saved your kernel module you change to that particular directory and then you can list and then you can do something like in smart and this will load your kernel module and to remove the kernel module you can use module basically you have a routine that is you tell kernel that whenever you load the module you have a init function so kernel is going to run your init function first the minute you load the module there is a init function that will be executed and when you unload the module so there is a exit function so there is a format of writing a kernel modules and then you can specify tell kernel that this is my init function this is my exit function and after that whatever logic you want to implement in the kernel module as per so during so there will be a init function and there will be a exit function in your module in exit basically you do all the cleanup in init you do the initialization whatever initialization is there required you do the initialization the init part our goal is to develop a driver you want to write a device driver but these device drivers I mean they you cannot you know develop them independently you require some kernel some OS say you are on Linux or you are on Windows so Windows it has upper layer of OS and it has a layer I mean the which accesses the hardware so the layer which accesses the hardware we call them hardware driver or the device driver for device so initial goal is to set up the you know this environment prepare this kernel so that I mean we can write the device driver so as you mentioned you know it has nothing the few things are in this it expects it expects you know so when you want to boot a kernel it expects that you keep a boot loader at the first sector of SD card and if you give it to him then it has a program in its ROM it can boot that thing automatically okay so first thing you require MLO because it will not understand anything else what it then okay so what you write in MLO so thing which loads MLO is pre-return into this okay that's not our worry but you provide MLO and it comes with this when you buy this legal board you can download them online but these MLOs are very specific to the board version of the board you know this is a C3 board so rather this is C1 board MLO will be specific to C1 because whatever is program into this that should understand that MLO right so that's very much specific to the version of the board now so okay we have got MLO now what now we want to load the kernel but kernel requires certain parameters so what is its load address you know all those things and then terminal settings what rate as they wish mentioned all these things it requires but these things you know so there should be something which will allow us to set up these parameters so that thing is you would you see the second thing so then MLO expects MLO is written in such a way that it will load this I mean you boot so when you load you would you will come you will see a prompt like you know dollar or hash you should see in shell prompt of Linux so there you have certain commands those commands are very standard you know so I want to set the boot arguments I want to set the terminal settings those are command those all commands are very standard and you can I mean change those commands depending on your need so you want to I want to change my boot my kernel load address from say 8000 to 9000 for whatever reasons so change those addresses okay then once you have you know decided these boot parameters have set these boot parameters so we save them as he mentioned you know we do print these these all commands are for you boot print and we will list down all the commands all the options set set ENVs for setting it so now you want to set the load address load addresses say suppose it's 8000 I want to set it to 9000 but be careful as he said because these things are not saved in your SD card anyway it will be saved in this right so on NAND flash so once you save it you cannot get it back either preserve whatever the previous values were and then you know basically change it so that you can always revert back and then you do save ENV save ENV will save it into the flash and then again now you want to so now you have set the boot parameter I want to load the kernel how will load the so what is the kernel it's like simple OS you know so as you mentioned Android Android is Android is mainly based on Linux only so most of the part is taken from Linux kernel but because they wanted it to port for mobile platforms so they have pushed in the changes which are required for mobile platforms so such as you know because power consumption is very important for mobiles so that part is you know change heavily Bluetooth component and this flash file system because general desktop systems your hard disks right but mobiles you have flash disks so you require a very you know specific file system which is very well performing so all those changes have gone into Android so that's why we have now we want to develop something for mobile we've chosen to you know port Android on this I will port Android so Android is our kernel it's OS but when so kernel is a micro you know it's so you know you are aware what is kernel you know yes you know it's minimal set of operations provided by the OS you know so OS could be segregated into say user level programs applications but kernel is you know whatever is privileged so that part is it's called kernel it's like you know kernel of some fruit it's very essential very minimal you know so these things are so that kernel we I mean so Android we have compiled Android so why do you require compilation I mean first arm compile it was compiled to compile it for some other architecture that's why you require cross compilation so by doing this cross compilation we have got our Android for arm okay now we will so steps are clear right first we'll put MLO and this order is very important I mean how do you copy first we have to copy MLO in SD card we require MLO you boot U image and root FF why do we require MLO at first right as I explained because it this card expects MLO to be at the first sector of SD card so if you copy say U image first it will treat your U image as MLO it will not work so that's why you copy MLO so MLO will be loaded by pre-written thing then MLO will load U boot U boot will load U image and U image will use root FF so that's why this order is maintained you know and once you have this U image ready U image you have cross compiled everything by cross compilation you'll get this okay and so after you know basically execute a steps properly and these sites are you know very much explanatory you go to them and they'll explain you I mean why they are doing it and so here in this block I mean in general with this site is very good for you know for embedded resources free electrons you'll get a lot of good resources and Beagle board I mean about Beagle if you want to read on I mean there is a Beagle board.org so this board is you know it's quite heavily extensively used and in university and you know generally so whenever they develop it they generally whenever they come up with a new board they'll go to the Stanford or somewhere and they'll demonstrate that we have come up with a new board so you can expect I mean why this board is so much popular because low cost and you know it's very resources are very much available initially if you see now you know we call it Beagle board is open source hardware must have noticed you know when open source software you have heard why this open source hardware because you know to access any hardware board you require you know it's a specification so suppose I want to access the NAND flash so what is the register in which I write then it will pass on that value to this NAND flash so all those register is specification I require right I need to know I mean how this hardware is organized I need to know the specification for it data sheet of it so if you buy a proprietary hardware I mean you can only you'll not get I mean so if I said tomorrow I go to market and I but I buy say LSI controller LSI hard disk controller so I cannot get it's specific specification for free that's why those hardware becomes very costly but for this Beagle board I mean they have made all these specification all these data sheets free you can go to and you can download data sheets for this that's why they are called open source hardware so you have got this board you have prepared this right prepared this means I mean if you do these all these steps you'll get your kernel loaded into this and now why do we require this loadable kernel module I aware man what is what are kernel modules when you compile a kernel you know it offers certain facilities or certain services right but now compilation is a long process like you compile a kind of like one hour one and half hour depending on the kernel now if you want to say build a driver for whatever NAND flash then imagine your development process will become very huge every time you'll have to compile a kernel right because while decoding you keep facing bugs right okay oh I miss this I'll change this but every time if you have to compile and test it'll take one and half hour right this is so loadable kernel modules are you know you compile a separate entity we call it a module and that module interacts with the kernel so kernel provides a method so by which you can insert that module in kernel so it makes your development easy you know there are certain other sides to it also but I'll stick to this thing only why do we require this kernel module so to make our development easy we are we require these loadable kernel module now these loadable kernel modules are so how do you load as you mentioned using this in small utility in small it's provided by kernel only when you say in small module .co load your module and whatever your module is expect to do it'll do so there is a certain format when how do you write a module very popular I mean you can search for any how do you write simple hello world module suppose my intended module just prints hello world when I load it and when I clean it so when I remove it it says goodbye that's it's you know designated job so when I do in small my module .co it will just print hello world when I'll say RM mod my module .co it will print goodbye so these so this is simple module but suppose I mean I have written my you know this USB driver module for this particular card as a loadable kernel module so if I say in small USB driver .co after I have you know loaded my Android and everything so you'll see the you'll see the hash prompt like you have seen in this the next shell compile your module separately and in small USB driver .co if everything is fine you have written your driver correctly you'll I mean you'll see that you can access your USB devices so it you know it shortens your process otherwise every time you have to compile the whole kernel you might not be able to appreciate right now but just try to compile a kernel once and it will like one and one or two hours and if you have to compile tool change another four hours one so I mean compile in morning come in evening it's like that so that's why I require these modules we haven't really gone into writing drivers you know how to write a driver that's next session but preparing this environment is very much necessary otherwise you cannot these are all you know just understand them like concepts don't try to remember like steps you know if you try to go on remembering like a steps you'll forget just every time you go and search let's try thinking why these why we are doing these things and same is for writing device driver professor mentioned I mean we don't really you know write device driver when we are colleges I didn't do it also didn't manage my company but it's you think logically steps what we are doing you know I mean next presentation also we have kept like this only I haven't really touched you know he's when you know I take a disk driver or anything but if you understand those steps you will be able to write any driver for any OS OS could be you know whether be it 3BSD or say Linux or you know Android whatever and for any architecture also architecture is a x86 because general concepts are same with the environment with the requirement they you know you can how to apply them that thing changes but once you understand those things so I mean you should be initially it looks like I mean it's scary I mean why are they doing I mean so many things but just try to understand I mean each step once at a time and why do you require it it's very easy to you know figure out when what's happening and you will easily easy to debug also suppose okay I might give it but my kernel is not getting loaded so okay so till this point everything is correct you know how do you debug logically right till this point okay this thing is working now it's not working if you just try to you know cram them as a set of steps will tend to you know get overcome by it so just try to understand you know why are we doing these steps these commands and all these things will easily you can easily find anyway just Google it and you'll get it these are standard let's try to understand why are we doing these things and same is you know for hardware writing also before that I mean how comfortable with OS operating system concepts like synchronization locking lock you know so these things I require you know I'll cover in brief detail I mean why do we require these things


Dave Vellante of Wikibon.org and this is Silicon Angles continuous coverage at theCUBE of VMworld 2011. I'm here with Stu Miniman also of Wikibon. Welcome Stu. Thanks for having me back again. So theCUBE is where we take knowledge, we extract knowledge from guests, we present it to an audience. We're covering all the angles at VMworld and one of the things we're doing this year, Stu, as you know, is we have in-depth spotlights. And we are doing a spotlight right now on VMware integration. This is sponsored by EMC and we're going to go deep into the whole notion of integration. Integration particularly at the storage layers are very important, isn't it? Absolutely, Dave. And why is that? Yeah, so integration is really important. So when we look at, as we've talked in some of the other segments, server virtualization helped utilization of server resources but it had this effect of breaking some of the other pieces of the stack. So storage was broken. So there's been a large effort by vendors to work with VMware to make integration points. And VMware has APIs and it has projects and vendors have also created their own coatings to be able to integrate with technology. And one of the things we're excited about here is, Wikibon did a lot of research and also leveraged the community a lot to hear about what's really important and what's being used out there. And that's what we're going to talk about for some of this spotlight. All right, so let's break it down. Some of the big trends that we're watching here at SiliconANGLE and Wikibon, virtualization environments, they're growing like crazy. They are the growth engine of storage. You have a nearly $50 billion ecosystem. We heard today that for every dollar spent on VMware licenses, it's now $17, according to Rick Jackson. Excellent. So it's up $2 from last year. It's up $2 from last year, so it's growing. Not only is the community growing, the pace of pass along, if you will, is growing. And so a big, big issue has been storage for the last several years. Storage for VMware is challenged. It's clearly getting better. The last two years, VMware has done a much, much better job of providing APIs to the community, but it's still taking some time and we're going to share some data on that. Another thing we're watching is the degree of difficulty of integration compared to other hypervisors. I mean, what are you seeing there? Right, so first of all, I'll write it. It's not just about the number of integration points but how easy it is for the customer to deploy that and extract value from it. So the other hypervisors are a little bit behind VMware and Market Share, and from a full functionality standpoint, a lot of them are in test dev environments or not the robust enterprise high application stacks, so might not have the performance requirements that other hypervisors have. So the last thing is that, we're talking about adoption rates. We'll look at the function. We have some survey data on how fast these new functions are being up ticked, adopted. Not super fast, we got a ways to go. Yeah, so I mean the storage industry is notoriously slow at adopting new technology and inertia in the marketplace and organizationally they're just really slow to roll out new things. So let's take a look at the business angles. We got a slide up here on this. I'm going to go through this very quickly. The strategy, integrate fast, integrate often, be first. Right, so that's for the vendors themselves the ones that are leading in the integrations we found are leading more in Market Share than they are generally in the non-virtual environment. And API integrations are becoming table stakes. Yep, the journey's not done for APIs. VMware has more that they'll be doing and they're organizing it better, but everybody is going to be able to match these APIs, so that's not a differentiator. So key players, highly fragmented in storage, meaning there's a lot of players chasing. Yeah, I mean it's not like a certain market, you have a dominant player or a duopoly. We know storage is, nobody has a third of the market even. You got guys like Tintry coming in saying, hey, storage is a do-over, essentially. Because they have the traditional guys like EMC, HP, and NetApp who are saying that they've taken their more legacy environments and made them VMware versus ones like Tintry who come out specifically targeting virtual environments only. And then this notion of storage becoming invisible in virtualization environments can become commoditized. We asked Pat Gelsinger that question today. He said, hey, we made a lot of money with Intel inside. So I thought that was a reasonable answer. And then what's relevant about VMware here? All vendors are now multi-sourcing hypervisors. VMware is number one, but you see more competition and storage vendors are having to split their resources. Yeah, so the quick note on that is when you talk about all these integration points, vendors are spending a lot of time in engineering effort to develop for VMware, and that's a potential challenge in the VMware environment. So I want to jump into the survey. This slide shows the adoption of these advanced features. So you can see the advanced features across the bottom. The brown or the zero is customers telling us they have not yet adopted these features. So you can see all these advanced features. We still have a lot of white space. You see SRM with automated fail-back. Right, so. That's the lowest on the list. The others are creeping up more. It looks like a VU meter. Right, so SRM, which has a lot of value in the marketplace, is not as widely adopted as, you know, something like, you know, V-motion is obviously in their basic integration point. Right, and SRM fail-back is even newer, so. All right, good. So now, we did a study in Wikibon with an extensive survey of our community, and we also did an extensive analysis. And what we looked at was, if I understand it correctly, the number of integration points and the value of those integrations from a user perspective. And then you and David Floyer and Nick Allen helped on this, put together basically a measure, a score of all the various vendors. And here's the layout here. So you have, you did it by products. You got EMC, VNX, and VMAX led. You got NetApp right there on the hill. There's a great horse race. We love analogies in the cube. HP and 3PAR, also very strong integration, and Dell Equalogic. Right, so, yeah, so real quick on the scoring is, first of all, we didn't want to bias companies that had a lot of products, like an HP or an EMC against a company like NetApp, who's a single product. So it's per product so that you can't claim I have 27 integrations on replication. You have one replication per product. So that's sort of normalized. It normalizes the data if you're finding a common list across all the vendors. It's very tough to do and it's up for debate. But we feel we had a nice fair list and we did talk to all of the vendors on this list and gave them ample time to be able to add and comment on that.  A couple years ago, I was at VMworld. I thought Hitachi's presence was lacking there. They've stepped it up now with vSphere's five. But you see them sort of in the middle of the pack and then IBM left hand, et cetera to the right. Dell Compellant. Compellant, a smaller company, didn't get the SDKs, for example, for VAI until very late in the game. Now that they're part of Dell, they're going to get them much sooner. So we're going to see this horse race cluster, you know, around and differentiation is going to come from other places, isn't it? Well, one thing to point out on this, this was on vSphere 4.1. So we expect with vSphere 5 that the gap will actually narrow between these vendors. The likes of EMC need to keep aggressively going forward and adding more integration points and staying ahead of the pack if they want to keep that thought leadership. Now the last thing I want to share with the audience is we asked customers, who's your primary storage vendor for VMware? And who is the best VMware storage vendor? And interestingly, so here it shows, this is the response on the pie chart to the best storage. You can see EMC stands out and then we superimposed EMC's market share based on IDC Q4 numbers. So EMC has a disproportional mind share within that base as does NetApp. Right, so what you're looking at here is really kind of a brand measurement from the customer base and is what customers believe. And EMC and NetApp had more people that didn't even have EMC and NetApp as their primary storage but that felt that they were the top vendor there. If you go to Wikibon.org, you can see all the details and metadata behind this survey that we did. It's really the community talking about the value of that integration. So a lot of research went into this. We did extensive analysis of all the major vendors and products. So check that out on Wikibon.org and search on VMware integration if you're having a hard time, find it. Stu, we're out of time. Thanks very much for... Yeah, just a final point on that is it was a real proof point for how the VMware community loves to share and feedback into the community which of course is core to the Wikibon and SiliconANGLE motto, peer sharing with peers, bringing that information and exploding it out there into the marketplace. Okay, this is Dave Vellante and we are live at VMworld 2010. I'm here with my colleague, Stu Miniman, SiliconANGLE's continuous coverage, The Cube, and we'll be right back.