 Okay, so we have presented, I'm going to present these slides keeping in mind for the beginners of Fildred's, so generally we want to put an end to the non-conceptments, so what are the challenges that we are involved in with, so I'll not go into the deep, I'll just cover the basic minimum steps that you can customize the end word for the nobody Okay, so I'll cover your first end word foundation in the non-consegment, challenges, what are the challenges when we take the end word to the non-consegment, then the memory analysis, what are the end word components which takes the more memory, what are the end word components which takes the less memory, what are the end word components which we cannot remove at all, and then how we can customize top-level, that's being the developer, all that's being, you don't know anything about the end word code, I just want to configure some directory, some main file and I want to remove some of the components, so how we can do that I'll show, then the analysis chart, so we have done experiment on couple of use cases and we came out with the results of end word behaves with those use cases, I'll show the chart for the performance Okay, fine, I'll start there to solve the problems on the mobile, okay, then eventually it is so rich people liking it and the way end word starts, fills, the end word code end word is so portable that the non-consegments, that is they have easily moved to the TV set up box also, now they are moving passing machines, etc. It has easily moved, we can see the number of appliances which has the end word enabled in the market, any appliances you launch with the end word it will set like any, one of the key challenges when we make a non-consegment product we need to include the bill of materials and all this stuff, that's a little complicated, but yeah there are some challenges that when we take the end word on the non-consegment and when we look at the price of the product, yes I'm making a high phone, I and tablet, I don't need to think about that, but let's say I'm targeting mass, want to launch product, okay, why end word, why people choose end word, most important point is licensing policies, it's up to you, you want to sell it, you want to open source it, it's up to you, that's one of the most important point, then it's open source, everybody can take it, modify it, whatever you want to do it, ecosystems, I can see I mean billions of developers who support the end word, so there are large number of ecosystem knowledge there with the end word, so you launch a product, ecosystem is there to give applications to you, so that's one of the key advantages when you launch a product to the non-consegment, let's say you launch a product to the microwave, you launch a product to the washing machine, number of developers can write an application for the washing machine or the microwave, so that's one of the key advantages of the end word, documentation is available, and then the sensor is there, and then so most of the applications in the non-consegment which runs on the C and C++ probably on SMU, okay, some of the non-consegments only support C and C++, not the Java, so using the end word we can easily develop an application C and C++ and we can run on the end word, and end word is a very good development tool as well as the debuggy, no need to set up, no need to buy any extra hardware for that, we just need to connect the USB-C to your phone, install the driver and start debugging your application where you use the call services, so what are the challenges that we involve, let's say you know take this end word to the non-consegment, the very first challenge is the cost to performance ratio, okay, when we talk, the two things comes into the pictures, one is builds of materials, again in the builds of materials, constructions, et cetera, okay, so we need to optimize the end word performance using the, you know, in-build hardware capabilities, it can be DSP, it can be, you know, hardware accepted, media, everything, SGX, all the properties, everything, then the boot type, more than that, okay, so that is one of the key factor that we need to consider that we boot end word to the non-consegment, then we talk about the non-consegment, every segment has the specific applications needs to be run, let's say I'm developing a home automation system, let's say I'm developing a medical healthcare device, I have my own application that I want to run on the end word apart from the other end word applications, that means it needs to be available throughout my life cycle of the world, one chip whereby is 256 MB, but I want a 100 MB of memory to run by applications, by medical applications, that means I need the end word within 156 MB of memory should be running with the 156 MB of primary, and my 100 MB should be free, must be free for my own applications okay, then ready to package solutions, this is one of the key advantages, I mean key things that we need to consider, there has to be solutions available, I just need to integrate, because here the question is time to market supporting end word to the non-consegment, navigation everything has one challenge that is called as the memory, I mean why I'm considering the memory, performance, you increase the performance, you increase the memory side, you increase the performance and the power consumption, memory size will be increased and the memory cost will be increased, you want a high power efficiency, and you want the low cost bills of materials, when you are making a product you want the total bills of, I mean so one of the key component is memory, because you want you don't want to compromise on the power function, that's the question what's the cost of the memory relative to the cost of the product, percentage it depends on the speed, when we consider let's say it is available $8 to try the percentage of the product cost again, it depends on what you want to include in the product, right there are number of variables available in the product, we have a representative number for a particular thing, 10% that means the audience relate to what you are saying generally like if you see there are multiple range of memories available like you have mddr, ddr2, ddr3, so if you are going for a power efficient device, like if you are putting a tablet in space then you need a power efficient device, so you will go for mddr or low power ddr, if you are putting like a home automation server or something, then you want like more memory, like there you will consider ddr3 kind of thing, because you might have put to the socket always so therefore like we are seeing somewhere like if you want to buy like 10k units of memory of say ddr2 or 256 megabytes, if you go for hynics and micro or something, you got somewhere around $15 okay, $14 to $15, now if you are making a product of just say $50, imagine like we have processor which is like $5 today, Cortex-A8 and ARM Cortex-A8 running at 720 megahertz with inbuilt 3D graphics accelerator and all those things so the cost of the processor is $5, but if you have to put a 256 megabytes of memory, for memory you have to pay like $12 to $15, if you want to go for ddr2 256 megabytes, same thing if you go with ddr3 then you will achieve like $4 or $5, but if you want to go with mddr or low power ddr, again you will have to put like $10 to $12, so it depends on what memory technology you are choosing and what is the performance and power that you are expecting so yeah, the one of the key component when we are choosing a product on the bin support here is memory, so here we are representing how to determine the end result with respect to memory, can't see as I explained already, so before going into that let's have a look over your Android software sets I think all of you are seeing this slide a couple of times I'll just give you a 10 second audio there is a native language and there is a flip machine, application numbers and applications, these are different things so how Android boots on the devices, so we have ROM code ROM code will execute you know small piece of code which called as a first level boot loader and we name it as a X loader again that first level code will execute the second stage of boot loader which will you know initialize all your files, then finally you boot load terminal executes will transfer control to the end order layer, this is how it looks like so when you boot a device your ROM code will be executed it will find piece of code and particular address, let's say some 0x000 address in your memory, it will take that code that will be executed, it will initialize all your files, then it will transfer control to your data, so what are the memories that will include in the booter so there are two types of memories, see the flash where it will be set it will take from that location and it will load it into the RAM you go outside, you play whatever you want to do, so that is your play area and it is considered as a RAM, so whenever these are the two memory parts, you have to optimize boot time memory also run time memory, okay, living area as well as play area, we need to also optimize our living area as well as where you want to play all end order sets, the study available this link, all the end order fonts that exist in the world today, it is required minimum of 190 MB of memory with the resolution higher than the qvga and the end order version is 2.1 hour later, so 190 MB is the minimum memory of memory at present in the font segment, so these are the use case that we have concentrated, one is boot the end order with the 120 MB of memory, the second is there is a use case I have 256 MB of memory but in that 256 I want to use around 100 or 130 MB of memory for my own applications that means end order should work with the list of memory requirements okay, so what happens when the end order boots it will see the list of packages installed and list of the services installed, but depending on our configurations it is key on creating the services and services and services and there are priority also set in the end order software text layers okay, so end order font, let's say there is an application called as a font, font end the call as a, the font has the highest priority which will be filled at the list, application you fill last you can fill the font statement, okay but applications to be exist when I move to normal font segment that means I should remove the font itself give the priority when end order is running, so this is where we can customize the end order package and we can save the memory before going into the, use the server tools, asmem, asmem is nothing but you can download the full when your end order is running you can download the full memory usage, with this tool you can see the graphs application text, how much of memory everything dgms also you can see, dumpsys, sface I'll just execute to, okay I'll give you table, so dumpsys will build the full dump it will give the full dump of that is allocated how much size will be used by the allocated and I'll just cover what are the terminologies, pss, what is pss, what is the allocative I'll just cover that, if you go to gallery all your images will be launched through this process this difference, end-order process.media so this is 4k, allocated is 4k, again the free is 24 pages this is pss, I'll just cover what is pss so when we talk about the memory, I don't know how many includes what is pss, what you see in the pss is that memory, what is shared to the other process let's say I'm filling a process that doesn't mean that shared process will also be get scaled this is used by the, so it means uss, unique set size so whenever it is not be shared, it's a non-shared portion of the application this will give you a real picture of the RAM non-shared pages as well as shared pages so we have taken RSS into account when we are calculating whatever allocations we are doing this is copy on write functionality, it's something like that when you launch one more application, then the class will be created writing something, it will not create one more page for that it will always share that theme, it will be allocated extra so in a way it's optimized internally questions, we did a previous point that you raised, where you said that you're going to customize android for various kinds of home factors, you're going to remove components and then you're going to make it thin, first of all once you do that can it be called android anymore, because I think android also has got a complains kind of thing, because you also are linked to the app store you take any app, you want to install it, android expects a basic set of API there so if you're going to cut off pieces, is it going to be called android? so again, when we say, the first of all, when I choose android, I'll choose android for each UI experience, okay, I can easily make an application let's say, I am making a peripheral, I am making a device which does not have a camera that means that all the applications which use the camera will not work on that is that okay? there was like, you need android then, you can just take a basic Linux kernel put a bunch of couple of services there and then you have the thing running there, what I am saying is like it's not android anymore, if you actually cut off that part first thing is like, I think an industry application, if you for example, remove the email application, if you look at the cts complains this thing, it will page you also what your question is, so there are, like if you see the flow of the presentation itself, like what we explained, like android taking android from a phone and tablet space into non phone and non tablet space, as soon as you take android out of, like do we know like how many android tablets and things in the market today are really certified by google saying like, they are google certified, like apart from samsung, HTC, Sony XS and these things, other like if you buy chinese tablets and all, they are not google certified that's what I am saying, so when you take android google doesn't certify, like if I take android ui and put it into a ui panel and put it on a home automation system, google doesn't certify that so android market doesn't work on such devices you understood what I am saying, so the point is like, you are just trying to make android work on small devices, but the other aspects of android like market place and so on are not valid, so market place is automatically cut as soon as you take android out of phone and tablet space to other things, that is one thing second question that you had is like, is android compatible now, like say for example, you download application separately and if you put on this system will application run, so based on your need definitely you can done compatibility test suit, it runs and say for example, on this particular device you don't have wifi and bluetooth you will see wifi and bluetooth tests fading on those devices, so automatically your compatibility test suit instead of becoming 100% will become 90% or 95%, but it doesn't stop you from running angry birds, because angry birds doesn't rely on wifi bluetooth, so you can still download angry birds and download this and you can, you will still get all applications, but I have to download more levels of angry birds, I won't be able to do that, so something which is related to a particular thing will not run, so those things will definitely be there, but it is still called android, so where we are taking android into is like the software stack and the components that android has and the application segment and application ecosystem that it has, all of those things are available on your product, but only thing is like it doesn't support android much, but it is compatible to all applications just to add to that, the google certification is only to allow google closed source applications like gmail, market and all those things to run, so with google certification also it is still android, but you are not allowed to use google's closed source applications like gmail, android market and things like that that's not required for the embedded systems, so you can just remove it right, then it's called not called android, it is android, but it's not really certified and it doesn't have these there is a compatibility specification no, that's for google applications to run, to like google for you to say android you need to pass that, yeah, yeah i can create a distribution on top of this, you can call it by any name this is a quote from android yeah, please continue, it's okay okay, so one more point i want to add on about these things, one of the key advantages of the android solution is i can take directly, i can put on the android designs to be a software expert, i can you know just buy the couple of applications in developer, which exist in the world today, android developer i can pay something, i can make my application straight up i don't need to bother about the application layer or the framework here whichever i could choose or whichever i could choose okay, so that will save the cost on the you know, making the software steps and where, when you guys have a big story you have to from the base come from directly from google on the store of the giths source and you build on your own we download the giths source and we do everything on your own, all the drivers and everything yeah, nothing like a google is set by the build itself so here we will give the source code for the couple of reference platforms after building you ask the developers for google to actually make it yeah, after building you need to ask for the same, you take it out okay so this is the analysis that we have done so what is the minimum living area, memory that we need is 100, 100, you put kernel image, kernel image around 3.5 MB before boot and after boot, there are two things so, you know, before boot, i have certain kind of memory when once i enter both the classes, it will try to you know, install the applications which will again have some files which require the space, okay, which we cannot remove so that will be increased and that's what in terms of NAND or runtime memory so when you say runtime, so the code of code java library which utilizes around 13 MB of memory, the core system library is nothing but your web core, webkit engine then the sjx component, then your SQLite, retype and other miscellaneous is 27 MB success clinger will occupy, it's again based on which kind of library we are using but it will vary from 5 MB to maximum it goes, but again it will include the space surface your launcher, your wallpaper, your status bar, everything so these are the components, it will be allocated by the success clinger so when i enter the boot, NAND questions will start from 1.5 MB to 16 MB again the limit to the NAND keep, you can make it in your source code you can say that i don't want any application to be run which requires more than 8 MB of the lbq you can configure that in the lbq system also in the lbq source code sjx, sjx is required minimum of 8 MB it goes up to the 40 MB again it depends on the what kind of application use case you are running let's say you are running a gallery use case which has your number of icons so each icon will occupy less than 4 by 4 which icon is 100 by 100 pixels so this kind of memory will be required so it will increase depending on your application use case are you applying media encoding or decoding? media encoding, we don't want to try these are the key components, let's say end-of-boots these are the key components that exist than the end-of-boots playing a media or what kind of memory it will use it will utilize and some of the cache memory it will be utilized that will be 40 to over 20 MB so these are in terms of the component and this analysis in terms of the particular process 16 MB, system server, 34 MB system UI is 19 MB media server, launcher, phone Bluetooth, media, system UI I will require 91.rmb minimum for end-of-boots so that much memory I will do required okay yeah yeah you can remove I will not consider Bluetooth so it will only include system server, system UI and launcher so how will you customize the end-of-boots so we have prepared one XLS6 utility which helps you out okay if I remove this component how much memory I will save okay so I have just taken one use case let's say I do not want contact phone and the sound recorder so I will remove all these components it will save me around 8 MB of memory there is a boot-type memory here it stays away go and delete this package source code, failure or something like that it will stay away but any questions on this so this I have just taken the use case study for the HMI device for the HMI device so these are most like you are removing the applications but not the framework what are the components? yes so again in the framework what are the frameworks which are close to the contact I will go in there contact engine would you be talking about memory optimization about phones also? no so I mean as a beginner second one I am taking the source code so the top level how can I configure my android package to gain the memory yeah most of this can be applied to phone as well if you do not want phone without contact you can build your package okay in the run time it's bit simpler to you know customize your android package just go to build target for the journey so this is a file so what are this is a list of all the packages that will be part of android build so you know you just delete one of the those packages which you do not want as a part of your product it will save you the good time one of the main process is running is phone okay which will be built at least I will just remove from my package which will not occupy any memory at the run time which is taking around 9 to 12 MB of memory at the run time by doing nothing so one more file is this one so over here you can remove some one of the components that you might not need this is a framework component let's say if I do not need as good light if I do not need contacts then the location provider I can easily remove it from this you need to rebuild guys in terms of memory is removing your wallpaper for the product if you do not want wallpaper you can easily remove why? because in the android every transfer and application or the window create an extra buffer for that so I can say roughly around 9 MB of memory will be required including wallpaper image size not planting okay so every application will you know if you do not want wallpaper specifications blank screen okay you can put it over there and you can remove the wallpaper from there so that is also you can do it you can just open to this file system server.java and you can apply these two patches already available online for people the other optimization is you can change the LCD density so you know if you make high LCD density it will occupy more okay icon size we have the icon size for every application when we launch the gallery applications we have the icon size that also we can configure you know the third area of customization is every resource file you can configure for the core components okay you have a taskbar for Bluetooth you know logo we have a launcher it's around more than 2K view of all those files so we can put the lace files lace icon files I mean put it over there it will optimize my memory at the same time I think we have to just build our android we have to put it in the use cases 128 128 with these features 144 with you know with removing these features and to replace it with removing these features so I can say that 144 MB is providing the optimal solution for me after 256 MB even I have run the 128 I noted the 128 MB of memory but it has over your experience but the 144 MB is most fine straight out have you have cleaned these changes to Google? no are you planning to do that? no there is more like experimentation within your just a customization for the not on that one Google leaves not Google does not care about yet yet yes so there is more like for your internal purposes than you are doing it but you are not planning so do you have any OEMs that says I am interested in this segment I want to take the source for it and then yes we do have the customers which says ok I bought android which which should run with the 128 MB of memory but I bought android which runs with the 150 of MB of memory I did write down everything so I have a link I have already created the wikipage and your in-depth memory analysis and it is a TI page so over there over there are even the full use case descriptions plus patches what are the patches that you can apply and you can build your own package can you go back to the portal like where you were talking about the various memory utilities where you are showing the SMM, PD and SMM yes I mean both which shows the current utilizations so right now my total memory is 286 298 MB I mean 280 MB of memory out of that only 3 MB is free in my phone it's not the end it's our experiment in the big bubble it's very important ok so it doesn't require ratio ok so how can you convince me that android you can go for android you can battle this ok ok I am saying I don't want to think so you guys I am just eliminating you ok so I am using a I just washing machine I don't want you guys ok I am just giving example ok so how can you convince me that you go for android one second before we take up the questions you are leaving so we have a hackers section set up for all boards and complete android source and tools so I request you to utilize that and if you have any questions related to what all things we are discussing here you can visit us there as well and then you can use live boards with all the tools sources that we have and try out all the issues that you are seeing so we are here today and as well as full day tomorrow so you can even bring your laptops and get the complete source code and tools and everything set up and work with a board and get android running and get a full end to end experience of android on any of these high end devices from Cortex-A to Cortex-A9 to graphics to multimedia and everything just try to bring the code sorry to you okay so I am not here to convince you I mean it depends on your choice why you should choose it I think you are not seeing anything also I am just talking like normal user see generally the way we talk from DICID is like if you as of today the way the android is and the way the android is going so if you have any head based system which is like UI based system we always just like go to android okay and if there is no head based system like if you are building a routing device or a network panel or something like not panel I will say like router or something like that which doesn't need a UI at all then we generally recommend them for either network or something I don't need any UI panel so in that case you don't need and as we are discussing so far android is nothing but the software components which are they are available in open source already like if I take open SSL or open GL or open banks or any component like SQLize anything you take they are all available in open source and they are not invented today they are there in the market for long time whichever is relevant for the current phone market and then have made it like a single distribution so if you are interested in any of those components then you rather go with android or you can go with qt or you can go with u1 2 or something you can create your own distribution by picking what components you want like if I want just Linux plus a browser I can directly and then I can do that independently also or you want to rely on android you can rely on android qt also come up with similar logic you can go to qt as well so these are all just nothing but distribution option available for embedded developers so today android is suitable for picking into long phone segments but we don't know tomorrow if it will be in that shape because today ginger ice cream sources are like 10gb earlier it was like 3gb we don't know exactly what all things they are integrating for other markets or not right so those things we will have to explore some of our customers are taking donut and proyo and building their products because they are satisfied with the stack that is available doctor I don't want my washing machine to be registered to google services when I log in I say give me your email id while I am washing clothes I want to play Angry Birds no such the only use case there I think this question can be better at the current level again at the current which android has it is not submitted to the genus community so they don't accept because for the reason that the way they had came the power management they don't understand that that is all politics which we don't have to be satisfied I need a system where I need better power factory management I will still pick android my power everything else still use android which is me operating that is all my day no many of the you know OEMs like BMWs who have the HMI for the cars they used to use wincy first then they tried open moco and you know me go and stuff like that most of them are moving to android because the time is very less and now the HMI are coming up with download of apps so if it's base or android many of these stock apps can be directly put to this HMI so you can buy your driving car you can add even a crash so those cars are coming and most of the cars are now there is another big challenge also for OEMs like say for example you have they are not you know advertised as an android base they don't have to because the only BMWs they are not going to give the upgrade to the creator they don't want any other software to answer that like say if you are a product developer what you have to do is that you have to build your software stack okay so today you have to build your software stack either in android or either in internet if you build on android then like just semiconductor vendors like TI like Samsung like all these guys will provide you ready android on their devices if you build your own today you might be with TI it might work tomorrow you want to move to a different your responsibility to take all your software stack on other things that is a big thing therefore you stick to some distribution which these semiconductor vendors are providing thereby you will get all the customization like power management like your UI everything together which is kit package for you on that particular right so android on like you might have all the applications which are running on TI plus android tomorrow you move to a Samsung because it is cheap maybe say you will just move your app here today and you will make Samsung work for you on all the android customization power management everything thank you let's thank you