Severity: 8192
Message: Return type of CI_Session_files_driver::open($save_path, $name) should either be compatible with SessionHandlerInterface::open(string $path, string $name): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 132
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::close() should either be compatible with SessionHandlerInterface::close(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 290
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::read($session_id) should either be compatible with SessionHandlerInterface::read(string $id): string|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 164
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::write($session_id, $session_data) should either be compatible with SessionHandlerInterface::write(string $id, string $data): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 233
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::destroy($session_id) should either be compatible with SessionHandlerInterface::destroy(string $id): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 313
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::gc($maxlifetime) should either be compatible with SessionHandlerInterface::gc(int $max_lifetime): int|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 354
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 284
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: session_set_cookie_params(): Session cookie parameters cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 296
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 306
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 316
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 317
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 318
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 319
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 377
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 110
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
Severity: Warning
Message: session_start(): Session cannot be started after headers have already been sent
Filename: Session/Session.php
Line Number: 143
Backtrace:
File: /home/thetechminers/public_html/application/controllers/Blog.php
Line: 8
Function: __construct
File: /home/thetechminers/public_html/index.php
Line: 321
Function: require_once
The largest embedded systems conference in the world is taking place this week in Nuremburg (Nurnberg) Germany. The conference is nearly overwhelming, with over four exhibitions halls containing more than 1,000 exhibitors, 15 classes, and 36 sessions covering topics on Systems Engineering, Wireless Technologies, the IoT, Security, and Software engineering to mention just a few. Digesting, sifting through, and identifying the major conference trends was extremely challenging given all the innovation, blinky lights, shiny objects, and information that is on show at the conference. Despite all the distractions, however, there are several major themes that stuck out from the conference and that appear to be significant trends in the industry.
First, twiddling bits and bytes is dead. For decades, the embedded software engineer has dwelled and thrived at the bit-level in the hardware, learning and understanding what every register, bit, and byte in the microcontroller did. Modern design cycles and products have become so complex that starting from scratch is simply not possible given the budget-constraints and time-to-market requirements. The microcontroller is becoming an abstract, black-box that developers no longer need to understand; instead, high-level tools are becoming available to start development at the application level.
The most notable example was the Renesas Synergy Platform. Renesas released their Software Synergy Platform (SSP) version 1.2.0, which includes qualified and warranted MCU drivers, RTOS, middleware, and a Wi-Fi framework. The platform abstracts the hardware and low-level drivers, providing developers with high-level APIs and configuration blocks to decrease cost and time-to-market. With the low-level drivers and middleware already completed, developers start focusing on their application from day #1, rather than the old way, which commenced with a "deep dive" into a 3,000-page datasheet.
Throughout the conference floor, there were many examples demonstrating the removing of low-level software development and replacing it with high-level visual blocks. Cypress Semiconductor demonstrated the ability to drop module blocks onto the PSoC (Programmable System-on-Chip) IDE and then configure behavior by connecting the modules. Microchip's Atmel Studio demonstrated its latest and greatest code generation, which created generated software that was human-readable. At the end-of-the-day, it looks like microcontroller vendors are starting to streamline the software development process by abstracting the microcontroller and allowing developers to work at levels above the silicon and at the application level. (This was a transition the PC world went through over 20 years ago, and that only now seems to be catching up with the embedded world).
Next, security and the IoT were a central theme to the conference. ARM announced the Cortex-M 23/33, which is a Cortex-M-based processor running TrustZone. This solution is going to provide developers with the ability to write software that will dramatically improve embedded system security, especially for IoT devices. An entire area in the exhibitor hall was dedicated to mobile-to-mobile solutions. Vendors demonstrated new Wi-Fi and connectivity modules with Redpine being an example. There were even sensor networks designed to work in smart cities, smart cameras, and security bridges. The IoT theme played out not just in product offerings, but also in the session tracks and the mini-sessions that took place at exhibitor booths. For example, IAR demonstrated how to optimize an IoT device for performance and energy usage.
Finally, an underlying theme that appears to be starting to gain traction is deep learning and image processing. My favorite example was from SCISYS, which demonstrated an autonomous rover designed to operate on Mars.