0
\$\begingroup\$

I like to know what's the procedure of building a new device? Foe example a hardware designer decides to make a new laptop that can run Windows or Linux, or someone wants to build a new Android device, he choose a proper CPU and other parts like RAM, graphic card, sound card, Wi-Fi, Bluetooth, Storage, LCD, etc.

But what about firmware and drivers?

Totally I like to know what software consideration should a hardware designer has to build a new device?

Simply, in Desktop computer, we buy the parts separately(mother board, graphic card, sound card, LCD, CD/DVD ROM, etc) and do not have huge concern and special consideration to choose(maybe only thinking about they communication protocol SATA, IDE, PCI ports, etc).

But what when we like to make a laptop or Android tablet? Should we write any low-level code for these or we only put the parts beside each other and build a new device?

For example, when DELL company wants to build a new laptop, it chooses the intel HQ6700 processor and Geforce m960 for graphic part and etc. so should DELL write any low level code when doing its laptop?

Or when Samsung wants to build a new tablet or smartphone, and wants to use Qualcomm snapdragon chipset, and other parts like bluetooth and wi-fi IC's, should Samsung write any low level code for building its new device? If yes, in which part and for what reason?

I see many Chinese company they build tablets and smartphone and heard they are little groups at their home! Is it true or lie? If true, how they can do this? amd what exactly they do? are they write low level codes? or even do designing hardware?

\$\endgroup\$

closed as too broad by Andy aka, Leon Heller, Dmitry Grigoryev, Voltage Spike, uint128_t Apr 12 '17 at 0:48

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    \$\begingroup\$ Yes. When the IC's are being chosen for a computing platform, FW, SW and HW teams all work together. Even when IC's are being designed, or when a specification is being written for an IC, FW and SW will likely be involved, as well as HW. \$\endgroup\$ – mkeith Apr 11 '17 at 6:30
  • \$\begingroup\$ So, you mean for example DELL company to build it's laptops or Google for it's tablets, they write firmware and drivers by themselves for every their devices?! \$\endgroup\$ – user145959 Apr 11 '17 at 7:07
  • \$\begingroup\$ A good designer will trade off build/buy decisions. It's a good idea to choose chips for which drivers are available, but you'll be connecting those parts in your own configuration, so you will always need to write the lowest level. You will also probably want to write the top level to promote your own look and feel. The middleware doesn't add so much apparent value, just necessary glue between the layers, so it's there that you'll try to use freely licensed or bought-in code. \$\endgroup\$ – Neil_UK Apr 11 '17 at 7:31
  • \$\begingroup\$ So, if we want to build a simple tablet for kids, is it possible to only doing hardware design(I mean interfacing processor)chipset) with other parts(Bluetooth, GSM IC, Wi-Fi IC,etc) ) and using open source resources to do it? \$\endgroup\$ – user145959 Apr 11 '17 at 7:39
  • 1
    \$\begingroup\$ I used to work for a US company that made kids tablets. I know what the profit margins are on the hardware. I have seen costed BOM's. We used suppliers in China and Taiwan. The most likely answer to your question is that the products are very low quality, or maybe some small companies in China are willing to accept VERY low margins. Just cost out your reputable lithium battery and charger and capacitive touch screen and processor and flash memory. See where you are at that point. \$\endgroup\$ – mkeith Apr 11 '17 at 7:59
1
\$\begingroup\$

Absolutely. Failing to consider the operation of firmware will severely limit the functionality of the end product.

Consider certain features of microcontrollers and System-On-Board Module devices. Things like UARTS, ADCs, GPIO and ethernet often have physical pins permanently dedicated to those functions. However sometimes those same pins also have secondary configurable functions that, in your application, would be better delegated to other non-specific GPIO pins.

The product requirements might mandate that the three UARTS and two ethernet ports must be entirely hardware interrupt driven and must not get in the way of the "main loop" in the firmware. This means that the circuit designer (at schematic level) can allocate those dedicated pins at the start of the project to prevent them being used for (accidentally) anything else. Accidents can happen especially when many departments are involved.

Then the Layout engineer (sometimes the same person) will generate a board that simply is able to use the default configuration for the dedicated ports, and apply information from any applicable app notes with confidence.

Planning ahead carefully and taking into account the features available to the firmware we can make systems that sometimes don't need any new drivers at all!

I have been involved in designing a few embedded systems that used UARTs, ethernet, PCIe, GPIO, I2C, SPI, RS485 and CAN bus all at the same time and we didn't have to write any new OS-level drivers, because we stuck to sensible, "keep it simple" methods of design, the pre-existing OS drivers didn't even notice anything that they couldn't handle. Much of this is made possible by spending a LOT of time at the start of the project simply choosing the system components very carefully and ensuring all the signals can be catered for at all levels in the system.

You can do a lot without having to write any drivers and this is a HUGE benefit in terms of reducing time and human-beings required to get the job done. But you've got to be prepared to plan ahead.

\$\endgroup\$
2
\$\begingroup\$

Yes we do! Moreover, a good HW designer also considers mechanics, environment, client's specifics and everything that can somehow affect the device. FW/SW is the simple part, as with little experience you know what will be easiest for them to implement.

\$\endgroup\$
  • \$\begingroup\$ So, you mean for example DELL company to build it's laptops or Google for it's tablets, they write firmware and drivers by themselves for every their devices?! \$\endgroup\$ – user145959 Apr 11 '17 at 7:07
  • \$\begingroup\$ No, no! But hardware is much more than dell and Google, and also i am sure they all write SOME software by themselves. \$\endgroup\$ – Gregory Kornblum Apr 11 '17 at 7:09
  • \$\begingroup\$ Nice, I editted my question. My question is about companies like DELL, Google, Samsung, etc. what do they in software side(firmware, driver,etc) after they designed their laptop or tablet or smartphone? \$\endgroup\$ – user145959 Apr 11 '17 at 7:13
  • \$\begingroup\$ @user145959 The manufacturers of each major chip will produce reference drivers for them. So if Dell chooses a GPU for a laptop, they can start with the reference driver for that chip. They may decide to keep the driver unchanged, or customise it for their laptop. \$\endgroup\$ – Simon B Apr 11 '17 at 10:34

Not the answer you're looking for? Browse other questions tagged or ask your own question.