August 2021

Li-Fi: The Brighter Way to Communicate

Globally, Wi-Fi has been used for years to access and transmit data. But more often than not, Wi-Fi and their modems have elicited unsavory remarks when more users have logged on.   Li-Fi is now poised to transform for the better the scenario of data transfer and access. What is Li-Fi??? How Li-Fi is generated?? The spectrum of visible light is considered 10,000 times bigger than that of radio waves on the electromagnetic spectrum, which measures radiation frequency. Deploying light can avoid the expenses required for the limited range of radio waves.

Li-Fi: The Brighter Way to Communicate Read More »

INTEGRATED RTOS FOR FAST AND EFFICIENT IOT DEVELOPMENT

Today’s competitive world of embedded systems and the internet of things is placing ever greater demands on developers. They need to produce products that optimize size, weight and power, as well as have focused feature sets that are also flexible so they can be quickly adapted to meet changing customer requirements. In terms of processors, this means a family that is built around a common, high-performance core that features low power consumption, but which as a series offers a range of selections in terms of on-chip functions and peripherals that present a compatible platform for software. This newer generation tends to be organized into such families that, with a common instruction set, encompass a range that provides scalability from small-scale to large-scale applications along with I/O, on-chip flash and RAM in market-leading sizes. Matching a real-time operating system (RTOS) to such a processor family requires that it be able to smoothly scale along the lines of power and performance offered by the line of processors. Ideally it should have a familiar, standard API such as POSIX, which is a Linux-compatible standard for embedded systems. It must have a set of core characteristics in a compact package along with a wide selection of tested and proven functional software modules that can be quickly integrated to match the application and selected processor along with the mix of on-chip and off-chip peripherals needed. This, of course, means a wide selection of such functional modules. Many vendors now offer integrated development kits that include a single-board CPU with an integrated RTOS along with peripherals and tools to help the developer get started immediately adding innovative value. Such an integrated platform supports eight principles required for fast and efficient IoT development: These features not only help guide development for focused design and meeting time-to-market demands, they also guarantee the functional considerations needed to work effectively in the internet of things. The platform’s rich modularity supports the lean development model by providing standardization, interchangeability of drivers, protocols and service modules, and portability of applications. This lets developers quickly adapt to changing customer requirements in the midst of a project. The integrated platform optimizes both hardware and software design on the go. Those same features make it adaptable — able to meet new market demands for features and functionality. Once a product is in place with a customer, the OEM must be able to quickly react to calls for additional features and expanded functionality — or even a smaller, lower-cost version of a product. Existing code can be moved to a higher performance processor and new features quickly added without serious revision of existing code. Security and safety go hand-in-hand and must be designed in from the ground up. If it can be hacked, it isn’t safe. Security begins with the selection of a secure initial design and extends through communication protocols, strategies such as password, electronic key and physical recognition, the use of secure booting, encryption and many more strategies. However, the judicious selection of the basic system architecture, hardware and software is also a key requirement. Two main features help ensure safety in systems. Determinism guarantees quick response to threatening conditions and makes the operation of the system predictable so that it can be reliably tested to meet strict timing requirements. Emergency stop with zero boot time means that a device can be halted instantly and restarted with zero boot time if required. Thus an unsafe condition can be halted immediately and brought back to a safe condition or the device diverted to an action to deal with the emergency. The internet of things is connected and must accommodate a very broad range of sensors, both wired and wireless. This means the full range of both wired and wireless connectivity. An RTOS that can deliver virtually any connectivity solution that can be selected and integrated into the RTOS design off the shelf is complete in that it contains everything you are likely to need for a project as it evolves. Among the supply of protocols should be those that can be used on the cloud side to easily and securely connect and transfer data and process commands. This requires the latest components and tools to deal with it and its newer applications, along with the ability to work with other leading-edge applications like Microsoft Azure. It also means the use of the best tools such as a wide selection among the IDE offerings, along with advanced support tools that allow use and tracking of memory and objects such as dials, gauges charts for variable displays, plus timing tools and displays to understand scheduling, interrupt processing and more. The incorporation of these latest tools, protocols and technologies and their availability across a matched RTOS and processor family makes this a truly cutting edge platform.

INTEGRATED RTOS FOR FAST AND EFFICIENT IOT DEVELOPMENT Read More »

How to choose ARM based processor

SCENARIO You are working on a new design and want to choose an ARM based processor. The questions at this point could be: ANSWER ARM is a fabless company. This means that ARM does not manufacture silicon. ARM designs processor cores and licenses them to its silicon partners. The silicon partners, in turn, design microprocessors/microcontrollers around these cores and manufacture the actual silicon or chips available for commercial purchase in the market. In case you are keen to know more about the ARM Cores than the silicon variants of the processors available in the market, you may refer to the Processor Overview section of ARM’s website. This section provides a lot of information on ARM processor families, the architecture, features, reference methodologies, etc. which would be a good starting point. If you wish to see more detailed documents on ARM cores, you may also refer to InfoCenter – the documentation section on the ARM website. Choosing an ARM based processor may involve a lot of technical and non-technical considerations. A partial list could look something like this: Technical: Non-technical:

How to choose ARM based processor Read More »

HOW SECURE IS YOUR LINUX?

Introduction: Linux is popular because, it is available for free of cost, so it was liked by the students, the developers can access and modify the source code due to its open-source nature, so it was liked by the programmers, it is having the ability to communicate with other different operating systems, so it was liked by the system administrators, and many more to put on.., but there is a potential threat w.r.t. LINUX kernel because of its open-source nature. Any hacker can easily understand the kernel architecture and thereby he can find and exploit the loopholes in the operating system and can steal the data easily. So, we will mainly concentrate on the types of attacks that can allow you to hack the Linux network. Attacks that can be used to gain access to LINUX network: Security measures to be taken care of:  LINUX or any other operating systems are not secure straight out of the box, but we can suggest you the minimum necessary precautions to be taken to avoid getting hacked by the attackers

HOW SECURE IS YOUR LINUX? Read More »

Five Technology Trends in Automotive Industry

The five technology trends to consider before the actual fully autonomous vehicles become a fact. These also show our future of automotive. Vehicles as IoT Devices The internet of things provides a great potential for interconnectivity and linking smart vehicles into a network, providing the possibility of optimizing vehicle performance and driver experience. This trend also leverages the ability of IC manufacturers to integrate enhanced functionality into the more powerful microprocessor. The wireless connectivity integration not only simplifies communication between vehicle’s subsystems but serves to link it with external networks, other vehicles or traffic control systems. The connected cars and the collected data offer potential for features such as predictive maintenance, traffic management and the most important enhanced safety and emergency response capabilities. Our vehicles are no longer limited productivity spaces. What’s more, we can continue with our other activities on the go while still not being distracted from the road, leading us to the next trend. Advanced Driver Assistance Systems The advanced driver assistance system (ADAS) is designed to reduce the driver’s workflow during the driving process itself. It is based on embedded vision technology, consisting of vision systems surrounding the vehicle, looking to place it within a protective bubble against driver error, road obstacles, other vehicles, and pedestrians. These vision systems are capable of identification and real-time tracking. They usually require specialized knowledge of image acquisition and processing techniques. However, today the development of these complex systems have been simplified. The dedicated vision processors and multicore CPUs have put the sophisticated vision capabilities in most engineers’ hands. There are even some development kits that lower the barriers to entry into embedded vision technologies. That means they are getting more and more widespread among new vehicles. Advanced Motor Control Modern vehicles are filled with dedicated motor-control systems, which drive fans, pumps, compressors, and servomechanisms of all types. The growing desire for maximum efficiency and control has motivated engineers to move beyond traditional scalar control systems to more sophisticated digital vector control algorithms capable of delivering full torque with acceleration and deceleration at rates that can be precisely managed. Many cost-effective solutions are developed to provide maximum control capability and enable engineers to harness the power of advanced vector control methods. These sophisticated methods provide great flexibility and present designers with some challenges. That’s why the achievement of stable operation through all corner cases of a vector control design can demand highly specialized knowledge and often leads to slips in tight development cycles. However, advanced motor control is a tech trend that provides an improved driver experience. Predictive Technology Artificial intelligence and machine learning impact almost all technological aspects. They have an essential role in the future of the automotive industry as well. Predictive capabilities are now becoming prevalent in cars. They provide a highly personalized driving experience. Manufacturers are applying AI and ML algorithms to automate the setting up process of a vehicle, including its infotainment system and its application preferences. That makes vehicles our new IoT devices that connect to our smartphones or wearable devices and actually understand us. The predictive technologies could also be implemented as sensors within a car. They can inform the driver if the vehicle needs service. They also estimate its performance, depending on the mileage and condition.  Vehicle-to-Everything Communication As we already noted above, connectivity is among the key trends in the automotive industry. You’ve seen the IoT trend above as well. However, this one goes beyond network connectivity.  It’s already changing the future of driving. Also, Intelligent traffic systems will be created to avoid collisions, send emergency vehicle notifications to provide car diagnostics and manage to park. The vehicle-to-everything technology will send real-time traffic notifications, accident alerts, and other warnings. It’s set to increase traffic safety, sent forward-collision warnings to detect obstacles and offer safety measures. This technology will take us a step closer to smart roadways and a safer driving experience.

Five Technology Trends in Automotive Industry Read More »

Emerging trends in Automotive embedded systems and applications

The embedded industry was born with the invention of microcontrollers/microprocessors and since then it has evolved into various forms, from primarily being designed for machine control applications to various other new verticals with the convergence of data communications.  Various classes of embedded systems such as media systems for homes, portable players, smartphones, embedded medical devices and sensors, automotive embedded systems have surrounded us and with continued convergence of data communications and computing functions within these devices, embedded systems are transforming themselves into really complex systems, thus creating newer opportunities and challenges to develop and market more powerful, energy-efficient processors, peripherals and other accessories. An embedded system is more than electronics as most people perceive it. It has electronics – both digital and analogue, special purpose sensors and actuators, software, mechanical items etc., and with design challenges of space, weight, speed, cost and power consumption. Its important characteristics are low-power, real-time responsiveness, low thermal dissipation, predictable, small physical form factor/footprint, low radiation/emission, ruggedness in design and impervious to external radiations etc. To achieve key requirements, generally, embedded systems are restricted to limited resources in terms of computing, memory, display size etc. With the continued convergence of other technologies, a lot more functionalities are being pushed into embedded devices that were once part of traditional computing platforms. This further adds a major “decision challenge” for architects and product managers on the selection of processors, operating systems, standards of usage etc., as demands on functionality increase with time to market decreases.  Automotive Embedded System With drive across the world to improve on emission controls and bring in efficiency in usage of fossil fuels, the automotive segment is challenged by various factors and embedded systems are the ways and means of achieving multiple objectives in this segment taking it from infotainment systems, engine control unit, Car-area-network, fuel management, safety systems all need to be embedded to be in it.  Traffic management and prediction systems are being developed for large cities across the world today and the critical systems that have to support this are M2M or V2V communication networks that, form adhoc networks, seamlessly gather information from multiple sources, fuse and make decisions that not only help the car users but also city traffic managers.  The real-time management of this is possible only by having embedded computing and communication systems that are part of the vehicle and the network. The usage of vehicle tracking and fleet tracking has already been beneficial for the operators by reducing their OPEX and downtime which has enhanced customer satisfaction.  This apart, media-oriented systems transport (MOST) is one of the technologies being deployed by OEMs for multimedia and infotainment networking. This technology is designed to provide an efficient and cost-effective fabric to transmit audio, video, data and control information between devices attached even to the harsh environment of an automobile. MOST MOST (Media Oriented Systems Transport) is a high-speed multimedia network technology optimized by the automotive industry. It can be used for applications inside or outside the car. The serial MOST bus uses a daisy-chain topology or ring topology and synchronous data communication to transport audio, video, voice and data signals via plastic optical fiber (POF) (MOST25, MOST150) or electrical conductor (MOST50, MOST150) physical layers. MOST technology is used in almost every car brand worldwide, including Audi, BMW, General Motors, Hyundai, Jaguar,Lancia, Land Rover, Mercedes-Benz, Porsche, Toyota, Volkswagen, SAAB, SKODA, SEAT and Volvo. SMSC and MOST are registered trademarks of Standard Microsystems Corporation (“SMSC”), now owned by Microchip Technology. The first multimedia installation based on MOST bus and protocol was introduced in the year 2001. In the same year, the MOST bus was applied in the next ten vehicle models. In the year 2013, MOST Cooperation consortium could report MOST introduction into 140 vehicle models including new models i.e. Audi A3 and Mercedes class S. MOST bus and protocol have been present in popular medium segment vehicles e.g. Volkswagen Golf and Opel Insignia as well as the models: Rolls Royce Ghost, Phantom and Wraith. The functioning of the majority of wire communication buses in motor vehicles is based on a linear bus topology. Therefore MOST bus is a unique solution because it is based on ring topology (Fig. 1). The application of fiber optic solutions is another specific feature. Communication via cable connections is possible after the transceivers replacement. MOST bus operation is typical for ring topology. The data block received from the preceding node is used as an information and commands source. The block received from the preceding node is regenerated and forwarded. Turned off devices transmit the optical signal without its analysis. The data transfer is finished when the block is received by its sender. The ring contains some special nodes responsible for the ring management i.e. commands generation based on user activity and for the ring synchronization (Fig. 1b). MOST protocol and bus are dedicated to multimedia networks which are sometimes called Infotainment networks. High throughput levels are required for data stream in such networks. Despite MOST150 standard functioning for several years, this fact has been not mentioned in many publications. Most often the graphical presentations inform about the throughput of about 25 Mbps (Fig. 2)which is underestimated by three times. The throughput of 150 Mbps will be probably exceeded soon. The manufacturers of Plastic Optical Fibers (POF) indicate the throughputs of 500 Mbps along the section of 20 m or 170 Mbps along the section of 115 m. The transceiving equipment is prepared for operation with a throughput of 5 Gbps. The current throughput is sufficient to use MOST as an element in the network supporting images received from the security camera or the games network.

Emerging trends in Automotive embedded systems and applications Read More »

Dynamic Memory Allocation

Dynamic Memory Allocation is defined as a process where the size of a data structure can be modified during the run time. There are certain predefined functions which can implement the above condition.There are 4 library functions provided by C all of which are defined under <stdlib.h> header file to facilitate dynamic memory allocation in C programming. They are: malloc() “malloc” or “memory allocation” method is used to allocate a single large block of memory baes on the specified size. The return type of malloc is of type void pointer which can be typecast-ed to any form.It initializes each block with a default value therefore some garbage value. Syntax: int *ptr = (cast-type*) malloc(byte-size) For Example:  int *ptr = (int*) malloc(100 * sizeof(int)); Since the size of int is 4 bytes, this statement will allocate 400 bytes of memory. And, the pointer ptr holds the address of the first byte in the allocated memory. calloc() “calloc” or “contiguous allocation” method is used to allocate specified number of blocks of memory baes on the specified type. It initializes each block with a default value ‘0’. Syntax: int *ptr = (cast-type*)calloc(n, element-size); For Example: int *ptr = (float*) calloc(25, sizeof(float)); This statement allocates contiguous space in memory for 25 elements each with the size of float. free() “free” method is used to de-allocate the memory or free the memory which was occupied by using the functions malloc() and calloc(),as they do not de-allocated on their own. Hence the free() method is used, whenever the dynamic memory allocation takes place. It helps to reduce wastage of memory by freeing it. Syntax: free(ptr); realloc() “realloc” or “re-allocation” method is used to dynamically modify the memory allocation of a previously allocated memory. The memory previously allocated with the help of malloc or calloc is insufficient, realloc can be used to dynamically re-allocate memory. Syntax: int*ptr = realloc(ptr, newSize); where ptr is reallocated with new size ‘newSize’

Dynamic Memory Allocation Read More »

Dual booting Windows and Linux using UEFI

Firmware Dual booting is not just a matter of software. Or, it is, but it involves changing your firmware, which among other things tells your machine how to begin the boot process. Here are some firmware-related issues to keep in mind. UEFI vs. BIOS Before attempting to install, make sure your firmware configuration is optimal. Most computers sold today have a new type of firmware known as Unified Extensible Firmware Interface (UEFI), which has pretty much replaced the other firmware known as Basic Input Output System (BIOS), which is often included through the mode many providers call Legacy Boot. Secure Boot One other important setting is Secure Boot. This feature detects whether the boot path has been tampered with, and stops unapproved operating systems from booting. For now, I disabled this option to ensure that I could install Fedora Linux. According to the Fedora Project Wiki Features/Secure Boot Fedora Linux will work with it enabled. This may be different for other Linux distributions. In short, if you find that you cannot install your Linux OS with this setting active, disable Secure Boot and try again. Partitioning the boot drive If you choose to dual boot and have both operating systems on the same drive, you have to break it into partitions. Even if you dual boot using two different drives, most Linux installations are best broken into a few basic partitions for a variety of reasons. Here are some options to consider. GPT vs MBR If you decide to manually partition your boot drive in advance, I recommend using the GUID Partition Table (GPT) rather than the older Master Boot Record (MBR). Among the reasons for this change, there are two specific limitations of MBR that GPT doesn’t have: The EFI system partition If you are doing a fresh installation or using a new drive, there are probably no partitions to begin with. In this case, the OS installer will create the first one, which is the EFI System Partition (ESP). If you choose to manually partition your drive using a tool such as gdisk, you will need to create this partition with several parameters. Based on the existing ESP, I set the size to around 500MB and assigned it the ef00 (EFI System) partition type. The UEFI specification requires the format to be FAT32/msdos, most likely because it is supportable by a wide range of operating systems. Operating System Installation Once you accomplish the first two tasks, you can install your operating systems. While I focus on Windows 10 and Fedora Linux here, the process is fairly similar when installing other combinations as well. Windows 10 I started the Windows 10 installation and created a 20 Gigabyte Windows partition. Since I had previously installed Linux on my laptop, the drive had an ESP, which I chose to keep. I deleted all existing Linux and swap partitions to start fresh, and then started my Windows installation. The Windows installer automatically created another small partition—16 Megabytes—called the Microsoft Reserved Partition (MSR). Roughly 400 Gigabytes of un-allocated space remained on the 512GB boot drive once this was finished. I then proceeded with and completed the Windows 10 installation process. I then rebooted into Windows to make sure it was working, created my user account, set up wi-fi, and completed other tasks that need to be done on a first-time OS installation. Fedora Linux I next moved to install Linux. I started the process, and when it reached the disk configuration steps, I made sure not to change the Windows NTFS and MSR partitions. I also did not change the EPS, but I did set its mount point to /boot/efi. I then created the usual ext4 formatted partitions, / (root), /boot, and /home. The last partition I created was Linux swap. As with Windows, I continued and completed the Linux installation, and then rebooted. To my delight, at boot time the GRand Unified Boot Loader (GRUB) menu provided the choice to select either Windows or Linux, which meant I did not have to do any additional configuration. I selected Linux and completed the usual steps such as creating my user account.

Dual booting Windows and Linux using UEFI Read More »

Difference between constant pointer, the pointer to constant and both pointer to constant and constant pointer

Constant Pointers: A constant pointer is a pointer that cannot change the address its holding. In other words, we can say that once a constant pointer points to a variable then it cannot point to any other variable. Declaration of constant pointer: <type of pointer> * const <name of pointer> An example:                 int * const ptr; An example program: #include<stdio.h> int main() {     int n1 = 0, n2 = 0;     int *const ptr = &n1;     *ptr = 100;//valid     ptr = &n2;//Invalid     printf(“%d\n”, *ptr); } In the above example: We declared two variables n1 and n2 and constant pointer ‘ptr’ was declared and made to point n1. Next, ptr is made to point n2,   then print the value at ptr, but as per the constant pointer the pointer pointing an address cannot be change, so we will get the error mentioned below “ error: assignment of read-only variable ‘ptr’            ptr = &n2; ” but we can change the value at the pointer. Pointer to Constant: A pointer to a constant is a pointer that cannot change the value of the address its holding through the pointer. Declaration of pointer to a constant: <type of pointer> const * <name of pointer>                                     or const <type of pointer>* <name of pointer> An example:                 int const*ptr;                                 or                 const int *ptr; An example program: #include<stdio.h> int main() {     int n1 = 0, n2 = 0;     const int *ptr = &n1;     *ptr = 100;//Invalid     printf(“%d\n”, *ptr);//Invalid     ptr = &n2;//valid     printf(“%d\n”, *ptr); } In the above example:                 We declared two variables n1 and n2 and a pointer to constant ‘ptr’ was declared and made to point n1. Next, ptr is made to dereference, then print the value at ptr, but as per the pointer we cannot dereference, so we got the error mentioned below   error: assignment of read-only location ‘*ptr’      *ptr = 100;//Invalid But we can change the address of the pointer. Both pointer to constant and constant pointer: Both pointer to constant and constant pointer is a pointer that cannot change the address its holding and cannot dereference the value also. Declaration of constant pointer: const <type of pointer> * const <name of pointer> An example:                 const int * const ptr; An example program: #include<stdio.h> int main() {     int n1 = 20, n2 = 10;     const int *const ptr = &n1;     printf(“%d\n”, *ptr);//20     *ptr = 100;//Invalid     ptr = &n2;//Invalid } In the above example:     We declared two variables n1 and n2 , here pointer to constant and constant pointer ‘ptr’ was declared and made to point n1. Next, ptr is made to point n2,   then print the value at ptr, and change the address and dereference the value, both are violating the rules, so we will get the error mentioned below  “ error: assignment of read-only location ‘*ptr’      *ptr = 100;//Invalid           ^  error: assignment of read-only variable ‘ptr’      ptr = &n2;//Invalid ”

Difference between constant pointer, the pointer to constant and both pointer to constant and constant pointer Read More »

Data Types in C

Data types specify how we enter data into our programs and what type of data we enter. C language has some predefined set of data types to handle various kinds of data that we can use in our program. These data types have different storage capacities. C language supports 2 different types of data types: Primary data types(primitive): These are fundamental data types in C namely integer(int), floating-point(float), character(char) and void. Derived data types: Derived data types are nothing but primary data types but a little twisted or grouped like array, structure, union and pointer. These are discussed in detail later. Here we will study primary or primitive datatype Primary data types: The regular integer that we use has 2 bytes size (16 bits) on a 16-bit machine. However, most the modern systems have 32 or 64-bit configurations. The size of an integer in such an environment is 4 bytes. Different data types also have different ranges up to which they can store numbers. These ranges may vary from compiler to compiler. Below is the list of ranges, with the memory requirement and format specifiers on the 32-bit GCC compiler.  DATATYPE: Int TYPE OF DATA: Integer MEMORY SIZE: 2 Bytes RANGE: -32768 to 32767 DATATYPE: Char TYPE OF DATA: Character MEMORY SIZE: 1 Byte RANGE: -128 to 127 DATATYPE: Float TYPE OF DATA: Floating point number MEMORY SIZE: 4 Bytes RANGE: 3.4e-38 to 3.4e+38 DATATYPE: Double TYPE OF DATA: Floating point number with higher precision MEMORY SIZE: 8 Bytes RANGE: 1.7e-308 to 1.7e+308 Program to check size of an datatypes: #include <stdio.h> int main() {          int a = 1;          char b =’G’;          float f = 7.77;          double c = 3.14;           printf(“Hello World!\n”);           printf(“I am a character. My value is %c and “          “my size is %lu byte.\n”, b,sizeof(char));           printf(“I am an integer. My value is %d and “          “my size is %lu bytes.\n”, a,sizeof(int));       printf(“I am a float with single floating point variable.”” My value is %f and   my size is %lu       bytes.\n”,f,sizeof(float));       printf(“I am a double floating point variable.”” My value is %lf and my size is %lu         bytes.\n”,c,sizeof(double));       printf(“Bye! See you soon. :)\n”);          return 0; } The output of the program: Hello World! I am a character. My value is G, and my size is 1 byte. I am an integer. My value is 1, and my size is 4 bytes. I am a float with a single floating point variable. My value is 7.770000, and my size is 4 bytes. I am a double floating-point variable. My value is 3.140000, and my size is 8     bytes. Bye! See you soon. 🙂

Data Types in C Read More »

Enquire Now

Enquire Now

Enquire Now

Please Sign Up to Download

Please Sign Up to Download

Enquire Now

Please Sign Up to Download




    Enquiry Form